一个非常精简的版本:添加了多个元素如何.load()只有一次?
情景两个选择,我的动画,然后加载使用 看来load()
是triggerd两次element_A
和element_B
外部网页... 有没有办法只能把它触发一次?
$('.element_A, .element_B').click(function(){
//...
$(".element_C").load("someFile", etc);
//...
});
一个非常精简的版本:添加了多个元素如何.load()只有一次?
情景两个选择,我的动画,然后加载使用 看来load()
是triggerd两次element_A
和element_B
外部网页... 有没有办法只能把它触发一次?
$('.element_A, .element_B').click(function(){
//...
$(".element_C").load("someFile", etc);
//...
});
帕特里克DW建为解决方案的基础。需要添加某种指标才能触发一次负载。
$temp_LoadCounter = 0; // added
$('.element_A, .element_B').click(function(){
//...
$temp_LoadCounter += 1; // added
if ($temp_LoadCounter == 1) { // added
$(".element_C").load("someFile", etc);
//...
} // added
});
使用标志来指示是否已经运行。
var triggered = false; // our flag
$('.element_A, .element_B').click(function(){
// if it hasn't run yet, run it and set "triggered" to "true"
if(!triggered) {
$(".element_C").load("someFile", etc);
triggered = true;
}
});
如果需要,可以在回调为load
设置回false
。
或者,如果它为什么被解雇两次的原因是,在选择的要素之一是嵌套在另一个里面,那是因为该事件被冒泡。
可以防止return false;
或event.stopPropagation()
(docs)法气泡。
$('.element_A, .element_B').click(function(event){
// prevent the event from bubbling and triggering the handler again
event.stopPropagation();
$(".element_C").load("someFile", etc);
});
喜帕特里克DW。 你明确指出我到正确的方向这是关键的解决方案! 方法之一是帮助解决问题的关键。唯一的问题是,一旦触发了AJAX负荷后重新设置为true,它是可利用足够快它可用于第二轮的。即使它放在相关代码最后一行的最后。最后我用它精美的作品的计数器。 我将其添加为回答这个线程。 方法2没有,即使内容装入容器内element_B nexted任何影响。 – PixelGrinch