mouseover、mouseout、click事件处理程序未启动

mouseover, mouseout, click event handler not firing

本文关键字:启动 程序 click mouseout mouseover 事件处理      更新时间:2023-09-26

这是代码-

setEvents:function(a, b){
    if(b) {
         $('#id').mouseover(function(){
            console.log('mouse over')
         })
         $('#id').mouseout(function(){
            console.log('mouseout')
         })
         $('#id').click(function(){
            console.log('click')
         })
    }
}

在执行此函数后,我预计将对事件触发相应的处理程序。但这并没有发生。然而,如果我在方法中放入一个dbugger,并在它附加后触发处理程序,它就可以工作了。那是当我在方法里面的时候,它是有效的。但是一旦该方法被执行,它就不起作用了。

您必须将该函数绑定到一个对象,然后必须调用声明的函数才能注册#id元素的事件处理程序:

  • 定义方法:
var handler = {
    setEvents:function(a, b){
        if(b) {
             $('#id').mouseover(function(){
                console.log('mouse over')
             })
             $('#id').mouseout(function(){
                console.log('mouseout')
             })
             $('#id').click(function(){
                console.log('click')
             })
        }
    }
}
  • 使用对象引用调用方法,并将参数传递给它:
handler.setEvents(a, b);

在这里,您可以查看JSFiddle上的完整演示

试试这个。。。jsFiddle演示

HTML(示例):

<div id="id">lala (with #id)</div>
<br/>
<div>lele (without #id)</div>

JS:

var setEvents = function(a,b){
    if(b){
         $('#id').mouseover(function(){
            console.log('mouse over');
         });
         $('#id').mouseout(function(){
            console.log('mouseout');
         });
         $('#id').click(function(){
            console.log('click');
         });
        }
}
$(function(){
    setEvents(1,1);
});

您没有发布完整的代码"如何调用setEvents"。但我认为您可能没有在DOM准备好的时候调用它。

$( document ).ready(function() {
// Call setEvents
  });

希望它能有所帮助,如果它不起作用,请发布更多代码