jquery发布并在clicked div中附加数据?

时间:2010-09-21 23:52:43

标签: jquery post html append

我正在尝试编写一个函数,当您单击div时,该函数将发布数据(并将结果附加到div中)。我已经得到它所以它会提醒数据,但由于某种原因我不能让它将数据追加到点击的div中?

可点击的div:

<div class="qaContainer">
  <h2>testing title</h2>
  <input type="hidden" name="catid" id="catid[]" class="catid" value="3">
</div>

和jquery:

jQuery(".qaContainer").click(function () {
  var cat_id = jQuery(this).find(".catid").val();
  if (cat_id) {
    jQuery.post("/index.php?option=com_qa&view=questions&catid=2&Itemid=33", { catid: cat_id }, function(data) {
    jQuery(this).append(data);
  });
};

它返回的数据:

<div class="info">
  <div class="question">testing 1</div>
  <div class="answer">testing 2</div>
</div>

现在我希望返回的数据在隐藏输入之后回到qaContainer div内部,这就是我尝试使用append的原因,但它无效。我在FF中遇到这个错误:

Error: b.createDocumentFragment is not a function
Source File: jquery-1.4.2.min.js
Line: 20

如果有人能提供帮助那就太棒了:)

2 个答案:

答案 0 :(得分:2)

您可以保留对您点击的<div>的引用,如下所示:

jQuery(".qaContainer").click(function () {
  var div = jQuery(this),
      cat_id = div.find(".catid").val();
  if (cat_id) {
    jQuery.post("/index.php?option=com_qa&view=questions&catid=2&Itemid=33", { catid: cat_id }, function(data) {
      div.append(data);
    });
  }
});

作为旁注,您的意思是在POST数据中传递查询字符串中的catid(作为常量)吗?

答案 1 :(得分:1)

我在this中存储了对that的引用,以确定它是否有所作为。虽然,我认为post()不会重新定义this。无论如何,请试一试:

jQuery(".qaContainer").click(function () {
  var cat_id = jQuery(this).find(".catid").val();
  var that = this;
  if (cat_id) {
    jQuery.post("/index.php?option=com_qa&view=questions&catid=2&Itemid=33", { catid: cat_id }, function(data) {
    jQuery(that).append(data);
  });
};