mouseover,mouseout,click事件处理程序未触发

时间:2014-09-15 09:04:07

标签: javascript jquery

这是代码 -

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,并在连接后触发处理程序,它就可以工作。那是我在其工作的方法内部。但是一旦执行该方法,它就不起作用。

3 个答案:

答案 0 :(得分:0)

您必须将该函数绑定到一个对象,然后必须调用声明的函数才能注册#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);

在这里,您可以查看完整的Demo on JSFiddle

答案 1 :(得分:0)

试试这个...... jsFiddle Demo

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);
});

答案 2 :(得分:0)

您没有发布完整代码“如何调用setEvents”。但我想也许你在DOM准备就绪时没有调用它。

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

  });

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