Javascript 单击()多次点火

Javascript 单击()多次点火,javascript,asp.net,click,dom-events,Javascript,Asp.net,Click,Dom Events,我正在使用document.getElementById(“val”).click()调用一个click事件,但它会多次触发 在这里,我添加了eventHandler: try { //add mousedown event handler to navigation buttons addEventHandler(oPrevArrow, "mousedown", handlePrevDayClick); addEventHandler(oNextArrow, "mous

我正在使用
document.getElementById(“val”).click()
调用一个click事件,但它会多次触发

在这里,我添加了eventHandler:

try {
    //add mousedown event handler to navigation buttons
    addEventHandler(oPrevArrow, "mousedown", handlePrevDayClick);
    addEventHandler(oNextArrow, "mousedown", handleNextDayClick);
    addEventHandler(oLogout, "mousedown", handleLogoutClick);
} 
catch (err) {
}
在点击事件中,我正在执行“自动点击”

我需要帮助,以找出是什么使它调用多次和一个可能的修复


注意:自动单击的按钮调用ASP.NET代码中的方法,请尝试将其与JQuery连接起来:

 $(document).ready(function() {
    $('#oPrevArrow').click(function() {
        $('#btn_prevday').trigger('click');
    });
    $('#oNextArrow').click(function() {
        $('#btn_nextday').trigger('click');
    });
    $('#oLogout').click(function() {
        $('#btn_logout').trigger('click');
    });
 });
这可能更加简洁,具体取决于您的箭头和按钮在DOM中的布局。它可能是jQuery的一行

比如:

 $(document).ready(function() {
    $('.arrow').click(function() { //note css class selector
        $('this + button').trigger('click');
    });
 });

通常,当您多次触发事件时,这是因为事件多次附加到某个元素,或者您自动单击的元素是附加了相同事件的另一个元素的子元素。检查它们是否相互包裹,如果是,则需要检测当前目标是否与目标相等,以确保只发生一次。或者您可以停止事件传播。

由于特定事件多次绑定到同一元素,因此会发生这种情况

对我有效的解决方案是:

使用
.die()
方法终止所有附加的事件

然后附加您的方法侦听器

因此,

$('.arrow').click(function() {
// FUNCTION BODY HERE
}
应该是:

$('.arrow').die("click")
$('.arrow').click(function() {
// FUNCTION BODY HERE
}

嗯,我会的,但是我的老板说不行。所以这真的没用。那真是太遗憾了。也许你可以让你的老板了解JQuery。斯科特·古思里(Scott Guthrie)经常在博客上谈论这件事。微软将其包含在他们的web解决方案模板中,因此它正在成为行业标准的javascript库。很快。我已经告诉过他了,但都是关于客户想要什么,所以我的话并不重要
$('.arrow').die("click")
$('.arrow').click(function() {
// FUNCTION BODY HERE
}