1

我绑定到这样的搜索输入:

$(document).on('tablebeforefilter.results_filter',
   '#results_table:not(.bound)',
   function (e, data) {
     e.target.class += "bound";
     // stuff
   });

如果重新加载页面,我正在使用bound该类来防止重新绑定元素(我正在使用Jquery Mobile,因此当用户在两个页面之间来回移动时会发生这种情况。

我的问题是,这样做会正确设置绑定,但它只会触发我的处理程序一次,可能是因为我将“绑定”类添加到元素中。

问题
为什么会这样?我认为将设置绑定集$(document) & some element然后运行,无论我添加什么类到这个元素。仅当重新解析页面时,我的bound类才阻止第二次附加绑定。如果我添加了阻塞类,为什么我的函数不再触发bound

谢谢!

4

2 回答 2

3

.class是一个字符串。因此,您添加"bound"到字符串"results_filter"并获得"results_filterbound"- 一个全新的类。因此.on()选择器不再匹配。如果你想使用.class,你也必须添加一个空格:

e.target.class += " bound";

这会添加一个类bound并保留旧类。为了轻松处理您可以使用addClass()removeClass()jQuery 的类。

于 2013-03-19T10:01:35.373 回答
1

将 jQuery 与“.on”一起使用旨在与不断变化的 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
});
于 2013-03-19T10:01:44.000 回答