单击显示下一个div

时间:2013-09-16 17:38:25

标签: javascript php ajax jquery

说我有以下HTML布局:

<div class="main">
  <div class="comment">
    <div class="info">
      <div class="data">
        <img src="image.png" class="image-click" />
      </div>
    </div>
  </div>
  <div class="open-me"></div>

  <div class="comment">
    <div class="info">
      <div class="data">
        <img src="image.png" class="image-click" />
      </div>
    </div>
  </div>
  <div class="open-me"></div>

  <div class="comment">
    <div class="info">
      <div class="data">
        <img src="image.png" class="image-click" />
      </div>
    </div>
  </div>
  <div class="open-me"></div>
</div>

... etc ...

如何点击其中一个comment课程中的图片,它会在next open-me课程中显示HTML?

这是我到目前为止所拥有的:

$(document).ready(function() {
  $(document).on("click", ".image-click", function() {
    $.ajax({
      url: 'show_html.php',
      type: "POST",
      success: function() {
        $(this).find(".open-me").html(); /* this is where I'm stuck */
      }
    });
  });
});

2 个答案:

答案 0 :(得分:2)

您的AJAX成功方法中的

this不再是指被点击的元素。为此,我们可以设置this的上下文变量:

$(document).on("click", ".image-click", function() {
    var self = $(this);
    $.ajax({
        url: 'show_html.php',
        type: "POST",
        success: function(data) {
            self.parents(".comment").next(".open-me").html(data);
        }
    });
});

答案 1 :(得分:1)

您可以使用它来访问兄弟姐妹。此外,您应该在.ajax()之外保存对$(this)的引用。

// outside the ajax function
var that = $(this);

// inside the ajax function
that.parent(".comment").next("open-me").html();

jQuery关于next()的文档是相关的。