我的html中有一堆嵌套在div标签中的按钮
<div class="button-wrapper">
<button class="button-class">Click here</button>
</div>
<div class="button-wrapper">
<button class="button-class">Click here</button>
</div>
...
单击按钮使用JQuery发布一些数据,并通过.ajax成功函数返回一些HTML。我正在尝试为每个单击的按钮替换div的内容,但由于某种原因,我的JQuery选择器似乎没有工作。
我正在我的成功函数中尝试以下内容:
$(this).parent().html(data);
我知道数据已成功发布,并且成功功能正在运行。奇怪的是,以下是有效的:
$(".button-wrapper").html(data);
但显然这会将HTML添加到每个div中,而不仅仅是单击按钮的那个。
有谁知道我在哪里可能会出错?
答案 0 :(得分:12)
在jQuery中,'this'通常在回调中被覆盖。解决方法是使用另一个变量引用它:
var _this = this; //or var $_this = this;
$(_this).parent().html(data);
答案 1 :(得分:3)
问题是你的回调中this
不再是按钮了。试试这个:
$(".button-wrapper").click(function(){
var that=this;
$.ajax(
// ...
success: function(data){
$(that).parent().html(data);
}
);
});
答案 2 :(得分:3)
这对你有帮助....
$("button").click(function(){
$("div").html("Hello <b>world</b>!");
});
答案 3 :(得分:0)
我建议使用firebug调整选择器。
除此之外,你不能为每个div设置唯一的ID吗?
答案 4 :(得分:0)
Html:
<div class="button-wrapper">
<button class="button-class">Click here</button>
</div>
<div class="button-wrapper">
<button class="button-class">Click here</button>
</div>
JS:
$.ajax({
//..
success: function(){
$(".button-class").click(function(){
$(this).parent().html("Dynamic Html");
});
}
});
答案 5 :(得分:0)
您应该知道需要加载成功函数的日志,例如:setInterval(myFunction,2500);