Javascript 为什么触发器和单击在这种情况下不起作用?
我有一段代码可以:Javascript 为什么触发器和单击在这种情况下不起作用?,javascript,jquery,Javascript,Jquery,我有一段代码可以: $('td.unique').live('click', function () { //function logic here }); 当我点击我的桌子的td时,这个效果很好。一切都好 现在,我希望能够在某些情况下通过编程实现相同的功能,而无需用户实际按下“单击”。 我试过: $(document).ready(function() {
$('td.unique').live('click', function () {
//function logic here
});
当我点击我的桌子的td时,这个效果很好。一切都好现在,我希望能够在某些情况下通过编程实现相同的功能,而无需用户实际按下“单击”。
我试过:
$(document).ready(function() {
$(".clearButton").click( function () {
var username = $(this).closest('tr').find('input[type="hidden"][name="uname"]').val();
var user_id = $(this).closest('tr').find('label').val();
var input = [];
input[0] = {action:'reset', id:user_id,user:username,};
$.ajax({
url: 'updateprofile.html',
data:{'user_options':JSON.stringify(input)},
type: 'POST',
dataType: 'json',
success: function (res) {
if (res.status >= 1) {
//all ok
console.log("ALL OK");
$(this).closest('tr').find('.unique').trigger('click');
$(this).closest('tr').find('td.unique').trigger('click');
$(this).closest('tr').find('td.unique').click();
}
else {
alert('failed');
}
}
});
此按钮与td.unique
位于同一行
这些都不管用。为什么?我做错了吗?当我以这种方式单击时,是否没有考虑我在live中绑定的函数?您需要在ajax函数中缓存$(this)
var $this = $(this);
ajax函数中的$(this)将不会引用所单击的元素
$(".clearButton").click(function () {
var $this = $(this);
var username = $this.closest('tr').find('input[type="hidden"][name="uname"]').val();
var user_id = $this.closest('tr').find('label').val();
var input = [];
input[0] = {
action: 'reset',
id: user_id,
user: username,
};
$.ajax({
url: 'updateprofile.html',
data: {
'user_options': JSON.stringify(input)
},
type: 'POST',
dataType: 'json',
success: function (res) {
if (res.status >= 1) {
console.log("ALL OK");
$this.closest('tr').find('.unique').trigger('click');
$this.closest('tr').find('td.unique').trigger('click');
$this.closest('tr').find('td.unique').click();
} else {
alert('failed');
}
}
});
});
如果您提供HTML源代码或其示例,它将帮助人们回答您的问题。“从jQuery 1.7开始,.live()方法已被弃用。请使用.on()来附加事件处理程序。较旧版本的jQuery用户应优先使用.delegate(),而不是.live()。”-此处将哪个元素称为
this
???还有显示您的标记(html)请发布html,“this”指的是什么?我猜问题是ajax调用中的$(this),我认为它不再指按钮了。尝试缓存$(this),然后在ajax函数中使用它。我不是ajax专家,在其他情况下它是不需要的。我不知道为什么它现在很重要。但是它在这种情况下非常有效,因为$(this)在ajax调用的success函数中。如果您使用了大量的$(this),那么缓存它总是一个好主意,这样jquery就不需要每次都保持$9this)。在工作中,如果我们不止一次地使用某个东西,我们会缓存它以减少开销