我绑定了这样的搜索输入:
$(document).on('tablebeforefilter.results_filter',
'#results_table:not(.bound)',
function (e, data) {
e.target.class += "bound";
// stuff
});
我正在使用bound
类来防止在重新加载页面时重新绑定元素(我正在使用Jquery Mobile
所以当用户在两个之间来回切换时会发生这种情况页。
我的问题是,这样做会正确设置绑定,但它只会触发我的处理程序一次,因为我将'bound'类添加到元素中。
问题:
为什么会这样?我认为$(document) & some element
上的绑定集会被设置然后运行,无论我添加到这个元素的类。只有在重新解析页面时,我的bound
类才会阻止第二次附加绑定。如果我添加阻止bound
类,为什么我的函数不再触发?
谢谢!
答案 0 :(得分:3)
.class
是一个字符串。因此,您将"bound"
添加到字符串"results_filter"
并获取"results_filterbound"
- 一个全新的类。因此.on()
选择器不再匹配。如果您想使用.class
,您还必须添加空白:
e.target.class += " bound";
这会添加一个类bound
并保留旧类。要轻松处理类,您可以使用jQuery的addClass()
或removeClass()
。
答案 1 :(得分:1)
使用带有“.on”的jQuery旨在与更改的html结构一起使用。因此,一旦您添加“绑定”类,您的事件就不会再被触发了。
尝试使用类似的东西
$(document).on('tablebeforefilter.results_filter', '#results_table', function (e, data) {
var $table = $(this);
if ($table.hasClass('bound') == false) {
$table.addClass('bound');
} else {
// stuff with bound class
}
// common stuff for both cases
});