我在这里和其他地方的了解之间的差异在网络上一些帖子live()和delegate().但是我没有找到我正在寻找的答案(如果这是一个骗局请告诉我).
我知道live和之间的区别delegate是live不能在链中使用.我也读过某些地方,delegate在某些情况下更快(更好的性能).
我的问题是,是否存在应该使用live而不是delegate?
UPDATE
我已经设置了一个简单的测试来查看性能的差异.
我还添加了.on()jQuery 1.7+中提供的新功能
结果几乎总结了答案中所述的性能问题.
.live()除非您的jQuery版本不支持,否则请勿使用.delegate(). .delegate()除非您的jQuery版本不支持,否则请勿使用.on()..live()和之间的差异.delegate()大于delegate()和之间的差异.on().
我在我的Web应用程序中使用jQuery.在阅读其文档时,我读到了live()和delegate().虽然他们已经解释了这两种方法,但我不明白它们之间的确切区别.还不确定哪种方法在哪种情况下是理想的.
请帮助我清楚地了解这些方法.
谢谢
有没有办法检索内联javaScript调用的元素源?
我有一个这样的按钮:
<button onclick="doSomething('param')" id="id_button">action</button>
Run Code Online (Sandbox Code Playgroud)
注意:
我尝试过的:
function doSomething(param){
var source = event.target || event.srcElement;
console.log(source);
}
Run Code Online (Sandbox Code Playgroud)
在萤火虫上我得到的事件没有定义
编辑:在一些答案之后,使用jQuery覆盖事件处理是非常可接受的.我的问题是如何使用它的原始参数调用原始的onClick函数,并且不知道函数名称.
码:
<button onclick="doSomething('param')" id="id_button1">action1</button>
<button onclick="doAnotherSomething('param1', 'param2')" id="id_button1">action2</button>.
<button onclick="doDifferentThing()" id="id_button3">action3</button>
.
.
and so on..
Run Code Online (Sandbox Code Playgroud)
所以覆盖将是:
$(document).on('click', 'button', function(e) {
e.preventDefault();
var action = $(this).attr('onclick');
/**
* What to do here to call
* - doSomething(this, 'param'); if button1 is clicked
* - doAnotherSomething(this, 'param1', 'param2'); if button2 is clicked
* - doDifferentThing(this); if button3 is …Run Code Online (Sandbox Code Playgroud) 我一直在阅读关于jquery现场活动的一些内容,我还是有点困惑吗?使用它有什么好处?
http://docs.jquery.com/Events/live
我知道它与bind类似,但这些事件似乎仍然不适合我.
只是寻找一些指针.
我的团队正在使用jQuery Mobile构建一个移动网站,当我们接近发布日期时,性能变得越来越受到关注.一个观察我做的是,我们有很多调用的live(),并delegate()在我们的代码; 但事实上,据我所知,我们只是不断用这些方法将事件处理程序附加到已经存在的(和DOM节点将始终存在,在我们的应用程序的情况下).
鉴于live()并且delegate()这两者都旨在为稍后可能出现在DOM中的节点提供动态绑定,并且考虑到每个document节点都涉及处理一直冒泡到根节点的事件,我想知道我们是否会看到性能通过改变这些调用(在适当的情况下)来改进bind().
我知道我可能会以某种方式自己测试这个,但是我没有很多使用JavaScript进行性能测试的经验,而且我认为它可能需要更长的时间来弄清楚它对我的影响.简单地问社区.有没有人测试过这个?有可衡量的差异吗?或者将这些转换live()并delegate()调用bind()是浪费时间?
我必须根据一些服务响应动态生成一些按钮,并且还必须在点击这些按钮时附加一些处理程序.所以我正在使用jQuery.live()它,它第一次运作良好.
但是,当我删除所有按钮jQuery("<some container div>").empty()并再次创建这些按钮时,现在点击按钮"处理程序调用两次",如果我重复相同它会激发三次并且相同.
你们可以提前帮助我吗?
我正在寻找一个超级简单的jQuery扩展.基本上我需要使用jQuery没有明确支持的一些事件.这些事件是iPhone的触摸事件,如ontouchstart,ontouchend和ontouchmove.
我通过这个工作:
// Sucks
$('.clickable').each(function() {
this.ontouchstart = function(event) {
//do stuff...
};
}
Run Code Online (Sandbox Code Playgroud)
哪种糟透,不合情理.这就是我想要的:
// Better
$('.clickable').touchstart(function() {
//do stuff...
}
Run Code Online (Sandbox Code Playgroud)
或者甚至更好1.4
// Awesome
$('.clickable').live('touchstart', function() {
//.. do stuff
}
Run Code Online (Sandbox Code Playgroud)
这些事件不需要特殊处理,并且应该像任何其他事件一样工作,但我似乎无法弄清楚如何扩展jquery以使它们像所有其他事件一样工作.