相关疑难解决方法(0)

jQuery.on()是否适用于在创建事件处理程序后添加的元素?

我总是在这种情况下对动态创建的元素.on()起作用.live()(例如我使用$('.foo').on('click', function(){alert('click')});然后foo由于某些AJAX而创建了类的元素,现在我期望点击该元素以引发警报) .在实践中,这些不是我得到的结果.我可能犯了一个错误,但是有人可以帮我理解实现这些结果的方法.on()吗?

提前致谢.

jquery

22
推荐指数
1
解决办法
8786
查看次数

为什么不把Javascript事件委托带到极致?

到目前为止,该网站上的大多数人可能都知道:

$("#someTable TD.foo").click(function(){
    $(e.target).doSomething();
});
Run Code Online (Sandbox Code Playgroud)

将会比以下情况更糟糕:

$("#someTable").click(function(){
    if (!$(e.target).is("TD.foo")) return;
    $(e.target).doSomething();
});
Run Code Online (Sandbox Code Playgroud)

现在有多糟糕将取决于你的桌子有多少TD,但只要你有至少几个TD,这个一般原则应该适用.(注意:当然,聪明的事情是使用jQuery委托而不是上面的代码,但我只是试图用明显的区别来做一个例子).

无论如何,我向同事解释了这个原则,他们的回答是"嗯,对于站点范围的组件(例如,日期选择INPUT),为什么停在那里?为什么不将每种类型的组件的一个处理程序绑定到身体本身?" 我没有一个好的答案.

显然使用委托策略意味着重新思考如何阻止事件,这是一个缺点.此外,假设你有一个页面,你有一个"TD.foo",不应该有一个事件连接到它.但是,如果您理解并愿意解决事件冒泡变化,并且如果您执行"如果您将.foo放在TD上,它始终会将事件连接起来"的策略,那么这些似乎都不是很重要.

我觉得我必须遗漏一些东西,所以我的问题是:将所有站点范围的组件的所有事件委托给BODY还有其他任何缺点(而不是直接将它们绑定到所涉及的HTML元素,或委托它们)到非BODY父元素)?

javascript javascript-events

18
推荐指数
1
解决办法
2365
查看次数

17
推荐指数
1
解决办法
5397
查看次数

删除类后,JQuery选择器仍在工作?

我有两个jquery函数一起工作,一个依赖于一个类,另一个取消了类.

一旦它被删除,我希望功能停止工作,但它继续吗?

这是怎么回事?

这是小提琴,为自己试试.

<div class="container disabled"> 
    <a href="www.google.com">Go to Google</a>
</div>
<label>
    <input type="checkbox" />Enable link</label>
Run Code Online (Sandbox Code Playgroud)

JS

$('.disabled > a').click(function (e) {
    e.preventDefault();
    e.stopPropagation();
    alert('should stop working');
});

$('input[type=checkbox]').change(function () {
    $('.container').removeClass('disabled');
});
Run Code Online (Sandbox Code Playgroud)

html javascript jquery

7
推荐指数
1
解决办法
4081
查看次数

jQuery的新on()方法如何与性能中的live()方法进行比较?

jQuery有一个所谓的新方法on()被建议更换delegate(),live().bind().

例如,使用两种方法:

$('#some-button').on('click', function() {
    //do something when #some-button is clicked
});
$('#some-button').live('click', function() {
    //do something when #some-button is clicked
});
Run Code Online (Sandbox Code Playgroud)

哪一个表现更好?(我知道这两个事件上下文都在文档级别.)

jquery event-handling javascript-events

3
推荐指数
1
解决办法
3054
查看次数

jquery:on vs live

我很好奇为什么当我.live().on()我的事件替换后,通过html()方法插入AJAX的响应后不起作用.假设我有html结构:

<div class="a">
   <a href="" class="alert-link">alert</a>
   <a href="" class="ajax-update">update</a>
</div>
Run Code Online (Sandbox Code Playgroud)

和jquery代码类似:

$('.alert-link').on("click", function(){
 alert('abc');
 return false;
});
Run Code Online (Sandbox Code Playgroud)

和ajax-update将触发请求,响应将是

警报更新

我会插入它parent().然后再次按下alert-link将导致重定向到/但如果我改为.on(),.live()那么将再次显示警报.我在这里错过了什么?我已经读到这.on()是替换.delegate().live().

jquery javascript-events

2
推荐指数
1
解决办法
2716
查看次数

.on VS.live与未创建的内容

可能重复:
jQuery .on不起作用,但.live会起作用

我只是找不到一个明确的答案.

我曾经使用过使用JS$('.someclass).live('click', function ... )创建的for项目,这当然在更新jQuery 1.9.0时不起作用(谢谢你们).我一直在环顾四周,找不到一个好的答案.那么,这又是个问题:

对于动态创建的项目,.live相当于什么,而不必在每次创建新项目时重新分配点击监听器?它仍然与旧的jQuery版本完美配合!

代表,现场和现场是不行的.到底是怎么回事 ?

jquery

-4
推荐指数
1
解决办法
146
查看次数