Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我的事件绑定在添加一个";阻滞剂“;Jquery中的类?_Javascript_Jquery_Events_Jquery Mobile_Binding - Fatal编程技术网

Javascript 为什么我的事件绑定在添加一个";阻滞剂“;Jquery中的类?

Javascript 为什么我的事件绑定在添加一个";阻滞剂“;Jquery中的类?,javascript,jquery,events,jquery-mobile,binding,Javascript,Jquery,Events,Jquery Mobile,Binding,我绑定到搜索输入,如下所示: $(document).on('tablebeforefilter.results_filter', '#results_table:not(.bound)', function (e, data) { e.target.class += "bound"; // stuff }); 我使用bound类来防止在重新加载页面时重新绑定元素(我使用Jquery-Mobile,因此当用户在两个页面之间来回移动时会发生这种情况) 我的问

我绑定到搜索输入,如下所示:

$(document).on('tablebeforefilter.results_filter',
   '#results_table:not(.bound)',
   function (e, data) {
     e.target.class += "bound";
     // stuff
   });
我使用
bound
类来防止在重新加载页面时重新绑定元素(我使用
Jquery-Mobile
,因此当用户在两个页面之间来回移动时会发生这种情况)

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

问题
为什么会是这样?我想是在
$(文档)上设置了一个绑定集&some元素
将被设置,然后运行,无论我向该元素添加了什么类。只有在重新分析页面时,我的
绑定
类才阻止再次附加绑定。如果我添加了阻塞
绑定
类,为什么我的函数不再触发


谢谢!

.class
是一个字符串。因此,您将
“绑定”
添加到字符串
“结果过滤器”
,并获得
“结果过滤器绑定”
——一个全新的类。因此,
.on()
选择器不再匹配。如果要使用
.class
,您还必须添加一个空白:

e.target.class += " bound";

这会添加一个类
绑定
,并保留旧类。要轻松处理类,可以使用jQuery的
addClass()
removeClass()

。类是一个字符串。因此,可以将
“绑定”
添加到字符串
“结果过滤器”
,并获取
“结果过滤器绑定”
–一个全新的类。因此,
.on()
选择器不再匹配。如果要使用
.class
,还必须添加一个空白:

e.target.class += " bound";
这将添加一个类
绑定
,并保留旧类。要轻松处理类,可以使用jQuery的
addClass()
removeClass()

将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
});
将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
});

如果您正在使用jQuery…为什么不使用
$(this).addClass('bound')
?mh.我喜欢在我能使用的地方使用纯Javascript。这有什么区别吗?你在
绑定
之前缺少一个空格。如果元素已经有class
foo
,你就让它有class
foobund
。不再
foo
绑定,也不再
绑定
。class
是字符串吗?所以你添加了
“绑定”
到字符串
“results\u filter”
并获取
“results\u filterbound”
——一个全新的类。查看此链接:,搜索章节“防止多事件绑定/触发”。查看解决方案2或3。解决方案3是一个最简单的解决方案。如果使用jQuery…为什么不
$(this)。addClass('bound'))
?mh.我喜欢在我能使用的地方使用纯Javascript。这有什么区别吗?你在
绑定
之前缺少一个空格。如果元素已经有class
foo
,你就让它有class
foobund
。不再
foo
绑定,也不再
绑定
。class是字符串吗?所以你添加了
“绑定”
到字符串
“results\u filter”
并获取
“results\u filterbound”
——一个全新的类。查看此链接:,搜索章节“防止多事件绑定/触发”。查看解决方案2或3。解决方案3是最简单的一个。