2013-03-17 80 views
0

这可能是一个非常简单的修复。我似乎无法弄清楚这一点。如何在jQuery中使用变量作为事件名称?

我已经在变量中存储事件名称,并希望在代码中使用它们,如下面的伪代码所示,但它似乎不适用于我。请参阅下面代码中的注释。

var EVENT; 
if (something == true) EVENT = "hover"; 
else EVENT = "click"; 

mynav = function() { 
    $(".nav").not(".nav2").bind(EVENT, function() { // EVENT works fine here 
    ...... 
    ...... 
    ...... 
    } (EVENT == "hover")?', function() {}':'';); // If EVENT is "hover", I want to display function()... Not sure how to make it work here.... 
} 
+0

@天顶我得到它的工作。为了检测'(EVENT == “悬停”)',我终于实现了直接使用jQuery的内PHP,这样的事情 - ?''。这是一段时间了。我不记得其他解决方案在我的情况下效果如何。下面大概是MohamedAli和codeiz的解决方案。 – user1448031 2013-05-29 00:59:52

回答

0

创建函数然后调用它在任何你想

function MyHover(){ 
alert('MyHover()'); 
} 

function MyClick(){ 
alert('MyClick()'); 
} 

var EVENT; 
if (something == true) EVENT = "hover"; 
else EVENT = "click"; 

mynav = function() { 
    $(".nav").not(".nav2").bind(EVENT, function() { // EVENT works fine here 
    ...... 
    ...... 
    ...... 
    } (EVENT == "hover")? MyHover() : MyClick() ;); // If EVENT is "hover", I want to display function()... Not sure how to make it work here.... 
} 
0

试着让你的功能分开是这样的:

function myHover() {} 

function myClick() {} 

,并在你的代码中调用函数:

mynav = function() { 
    $(".nav").not(".nav2").bind(EVENT, function() { // EVENT works fine here 
    ...... 
    ...... 
    ...... 
    } , ((EVENT == "hover")?:myHover : myClick)); 
} 
0
var EVENT = something == true ? "hover" : "click"; 
mynav = function() { 
    $(".nav").not(".nav2").bind(EVENT, EVENT === "hover" ? function() { 
     // Hover function 
    } : function() { 
     // Click function 
    }); 
}