【发布时间】:2013-03-01 19:58:42
【问题描述】:
我试图寻找答案,但我的措辞与使用 jQuery on() 方法寻找事件委托的问题太相似了。因此,请不要对我的问题的措辞感到困惑。
鉴于我编写 jQuery 应用程序的经验,我真的问这个问题我感到很惭愧,但我必须承认我实际上并不知道这个问题的答案:-(
考虑一下:
// Create the div
$('#wrapper').prepend('<div id="test"></div>');
// Add content to the div, and attach events
// Only execute it once the div has been created though, so wait 20 milliseconds
setTimeout(function(){
// Add some button
$('#test').html('<button></button>');
// Add an event to the button
// ... after 20 milliseconds
setTimeout(function(){
// Attach the click event
$('#test button').click('dosomething');
});
},20);
在上面的代码中,我必须使用setTimeout 来确保在选择元素并添加内容、事件等之前已经创建了元素...
我的问题很简单,有没有更好的方法来做到这一点?没有超时?
请注意,我不是说,有没有更好的方法来编写上面的确切代码?我只是想知道是否有办法避免由于指定的原因而使用超时.
【问题讨论】:
-
“我必须使用
setTimeout来确保在选择元素并添加内容、事件等之前已创建该元素...” 不,你不需要. jsfiddle.net/LVH7w -
可能我不明白中间创建的需要什么,为什么不能用on?
-
@thesystem 有趣的是,这就是我最初编写代码的方式,但它不起作用!它仅在我插入超时后才起作用。这就是为什么我这么糊涂!!! :-(
-
添加新的子元素或 HTML 是同步操作,所以不需要任何超时。
-
@thesystem 好的,我会尽力而为。我的应用程序很大,这只是一个小sn-p。可能需要一些时间来创建一个有效的 jsFiddle。感谢您一直以来的帮助。我很高兴您同意不需要超时...
标签: javascript jquery timeout