我正在使用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) {
}
在点击事件中,我正在执行“自动点击”
function handleNextDayClick(e) {
e = e || window.event;
stopEvent(e);
document.getElementById("btn_nextday").click();
}
我需要帮助才能找出多次调用的内容以及可能的修复方法。
注意:自动点击的按钮会调用ASP.NET Code-Behind
中的方法答案 0 :(得分:2)
通常,当您多次触发事件时,这是因为事件多次附加到元素,或者您自动单击的元素是附加了相同事件的另一个元素的子元素。检查它们是否相互包裹,如果是,则需要检测当前目标是否等于目标,以确保它只发生一次。或者你可以停止事件传播。
答案 1 :(得分:1)
尝试用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');
});
});
答案 2 :(得分:0)
这是因为特定事件多次绑定到同一个元素。
对我有用的解决方案是:
使用.die()
方法杀死所有附加的事件。
然后附加你的方法监听器。
因此,
$('.arrow').click(function() {
// FUNCTION BODY HERE
}
应该是:
$('.arrow').die("click")
$('.arrow').click(function() {
// FUNCTION BODY HERE
}