2013-07-13 124 views
0

我有一个会动态里面包含两个或单页的详细DIV一个模板文件: div的将是如下: 1.查看格 2.编辑DIV 其他CAN是 - 解决方案格...jQuery的单击事件执行单一的点击多次

编辑DIV是display none而VIEW格出现逆转和。所以,一次只能出现一个。

模板文件包含以下的javascript:

AJS.$(document).on('click', '#addROW', function() 
    { 
     console.log('calling'); 
     .... 
     .. 
    } 

现在,当我在add点击链接(在模板文件存在),那么在执行上面的事件,它应该添加一行,并打印日志消息,但是,它执行双打,最初执行两次(作为包含在两个屏幕中的模板)并打印两次消息“调用”,并且在一些时间之后,它执行双倍的4次执行。我希望它应该只执行一次,只打印一次“致电”消息。

我该如何解决此问题。

看起来是因为JavaScript被添加多次..但我怎么能控制它的单次添加到页面或任何其他方式来解决这个问题?

谢谢

+0

将这个上的jsfiddle所以我们可以检查怎么回事。 。 – ravisoni

+0

underscore.js有'_.debounce(yourFunction)'这个问题。还有'_.once(yourFunction)'和'_.throttle(yourFunction)'。代码是可用的(MIT许可证),通常很短:http://underscorejs.org/#debounce – Paul

回答

1

您可以检查脚本设置好的或者不进行分配新的事件:

AJS.$(document).on('click', '#addROW', function (event) { 
    if (event.handled !== true) { 
     //put your code here 
     event.handled = true; 
    } 
    return false; 
} 
+0

这将只允许一次是inserted.When点击Add按钮旁边时,它不会工作。 –

+0

谢谢。它在每个屏幕上都可以工作。在此之前,其次 - 'AJS的$(document).off( '点击')对( '点击', '#finalremove',函数(){...}'它也可以打破,但其他事件呼唤。 – dsi

1

试试这个

AJS.$(document).on('click', '#addROW', function(event) 
{ 
    event.stopPropagation(); 
    console.log('calling'); 
    .... 
    .. 
}