我正在尝试编写一个函数,当您单击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
如果有人能提供帮助那就太棒了:)
答案 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);
});
};