Javascript jQuery代码触发两次
我不知道原因和方式,但我的jQuery代码似乎在任何事件中都会触发两次 以下是我代码的一部分:Javascript jQuery代码触发两次,javascript,jquery,html,jquery-plugins,jquery-load,Javascript,Jquery,Html,Jquery Plugins,Jquery Load,我不知道原因和方式,但我的jQuery代码似乎在任何事件中都会触发两次 以下是我代码的一部分: commmon.js: $(document).ready(function() { $(".fpbtn-one").click(function() { console.log("Click recorded!"); // Gets logged twice on click $(this).parent().next().slideToggle();
commmon.js
:
$(document).ready(function() {
$(".fpbtn-one").click(function() {
console.log("Click recorded!"); // Gets logged twice on click
$(this).parent().next().slideToggle();
});
// The rest of the code...
});
$(window).load(function() {
console.log("Setting up slides"); // Gets logged 2 on page load
// These get initialized twice
$("#div-1").responsiveSlides({
auto: true,
pager: true,
pause:true,
nav: false,
timeout: 3000,
speed: 500,
maxwidth: 482,
namespace: "transparent-btns"
});
$("#div-2").responsiveSlides({
auto: true,
pager: false,
pause:true,
nav: false,
speed: 2000,
maxwidth: 320,
});
});
HTML:
window.NREUM | | | |(NREUM={}),(NREUM={}),(NREUM={})nRequire=函数a{var c=b[f][1][a];返回e(c?c:a},g,g.exports,a,b,c,c,d)}返回c[f]
window.NREUM | | |(NREUM={});NREUM.info={“beacon”:“beacon-4.newrelic.com”,“licenseKey”:“204ccc8db2”,“applicationID”:“1825150”,“transactionName”:“YVnVybacwxftwxFcWgzyKylTFWMVL0DG0Zerg==”,“queueTime”:0,“applicationTime”:187,“ttGuid”:“agentToken”:“userAttributes”:“errorBeacon”:“jserror.newrelic.com”,“代理”:“js代理”:“js.newrelic.com\/js-361.min”}
原因可能是什么?可能是事件冒泡。使用
event.preventDefault()
,它将阻止默认事件发生,或者event.stopPropagation()
将阻止事件冒泡
$(document).ready(function() {
$(".fpbtn-one").click(function(event) {
event.stopPropagation();
console.log("Click recorded!"); // Gets logged twice on click
$(this).parent().next().slideToggle();
});
// The rest of the code...
});
您的相关代码是必需的,但根据上面的代码片段,请尝试将所有代码放在document ready方法中。最简单的解释是,您错误地包含了common.js两次
查看各个脚本,看看您是否在主文件的顶部引用了common.js。是否您的代码正在处理代码加载到的元素 这个答案可能就是它发生的原因:
试着把这些东西放在div里面的身体里 示例。
我希望它能起作用。:在调用jquery时,开始使用良好实践时要小心:
!function( $ ) {
your code
}( jQuery )
就像你避免冲突一样
然后在html中添加js脚本时要小心,你可以添加两次,例如在html文件中调用一个js,但在回调中加载的js中,例如在另一个包含js的页面中,它将调用两次你的代码…我以前在递归调用中遇到过同样的问题,js从不停止调用它!!
在主页中,最好是在几个文件中调用js,否则您必须调试它
此外,您没有粘贴所有的代码我们帮不了您,我们只能告诉您我的意见…通常不是一个好建议…可能是您已经将脚本文件
commmon.js
包含了两次。请检查您在代码中对它的引用。使用“一”而不是“一”click@CodingAnt那没有任何意义。那只是一个建议,你能支持吗如果你想要一个解决方案,你应该发布你的html或fiddle。这一切都取决于你。我将所有JS包含移到了页面的顶部,它解决了这个问题。它起作用了,但我不知道为什么:(每个代码块都会发生同样的事情。这不可能是它。$(window.load()呢)
?这不会冒泡。它已经在就绪处理程序中。如果不是,它可能根本不会启动,而不会启动twie。请看这个问题,您会注意到我没有两次包含该文件。@chuckfinley firebug报告脚本再次动态导入。
!function( $ ) {
your code
}( jQuery )