我在这里和其他地方的了解之间的差异在网络上一些帖子live()和delegate().但是我没有找到我正在寻找的答案(如果这是一个骗局请告诉我).
我知道live和之间的区别delegate是live不能在链中使用.我也读过某些地方,delegate在某些情况下更快(更好的性能).
我的问题是,是否存在应该使用live而不是delegate?
UPDATE
我已经设置了一个简单的测试来查看性能的差异.
我还添加了.on()jQuery 1.7+中提供的新功能
结果几乎总结了答案中所述的性能问题.
.live()除非您的jQuery版本不支持,否则请勿使用.delegate(). .delegate()除非您的jQuery版本不支持,否则请勿使用.on()..live()和之间的差异.delegate()大于delegate()和之间的差异.on().
在我的网站运行期间,我使用带有"a"类的jquery创建新的div.我为"a"类定义了一个click()函数,如下所示:
$(document).ready(function() {
$(".a").click(function(){
$(".a").hide();
});
});
Run Code Online (Sandbox Code Playgroud)
问题是,使用同一个类创建的新div在单击时不会调用此函数.其他具有"a"类的div在开头就有.我究竟做错了什么?
只是想知道是否有一种方法可以让jquery在点击时拦截一个链接.问题是,首次加载页面时,我的页面上的某些链接未加载.我有一个模糊的回忆,听说jquery有办法拦截所有当前和未来的链接.这是我的代码.它适用于开始时所有链接,但稍后加载到页面上的链接不会被此函数拦截
$('a').trackClick({
areaClick: function(element) { return getAreaClicked(element); },
href: function(element) { return getHrefFromElement(element); },
text: function(element) { return getTextFromElement(element); },
exceptions: function(element) { return isException(element); }
});
Run Code Online (Sandbox Code Playgroud) $(document).ready(function() {
$("img.tile").click(function() {
var actid = $(this).data().id;
$("#lz").load("/dialog/pre?actid=" + actid);
$("#btnCheck").click(function() {
alert("test");
});
});
Run Code Online (Sandbox Code Playgroud)
load()调用带来一个HTML片段,<input id="btnCheck" value="Check" />
但是当我点击它时事件不会触发.必须与片段的加载方式有关.你是如何做到这一点的?
我正在我的网站上工作,从我学习jQuery的那一刻起,我的印象是.live()非常有帮助,但是最近,你们这里的许多人都被推荐使用.on(),为什么是这么?是什么让.on()优于.live()?谢谢.
我正在使用jquery和ajax.
我有一些ids id ="apple-23",id ="apple-45"和...
我有一些像这样的jquery代码:
$("[id^=apple]").click(function(){
elid = $(this).attr('id').split("-");
pid = elid[1];
alert(pid);
});
Run Code Online (Sandbox Code Playgroud)
代码适用于这些div.
但是ajax也会返回类似的id,类似id ="apple-61"等id模式,但是jquery代码对这些ajax生成的div不起作用.
为什么会这样?我该如何解决?
例如,如果我写这个代码:
$(document).ready(function(){
$("div#i").click(function(){
alert("ok");
});
});
Run Code Online (Sandbox Code Playgroud)
加载时在页面中找不到带有i id的div元素,所以在用一些函数创建它之后; 我点击它,什么都没发生,所以我如何刷新jquery中的ready函数..