2011-09-01 54 views
1

我有以下jQuery的例子以外的變量:jQuery的,您可以通過功能

$('li.mega').mouseover(function() { 
    var megaTrue = 1; 
}); 

$('li.mega').mouseout(function() { 
    var megaTrue = 0; 
}); 

,比

function functionName() { 

     if(megaTrue == 1) { 

      //do something 

     } else { 

      //do nothing 
      return false; 

     }    
    } 

但是,megaTrue將是不確定的,是有什麼樣的jQuery的全局變量?

所有的建議非常感謝。

+1

剛剛定義的功能之外的變量應該做你想要什麼。 – m90

回答

1

你可以,但它很少使用全局變量是一個好主意:這是真實的Javascript不亞於任何地方。存儲數據的語義和有意義的地方在於元素本身。 jQuery的支持這與data方法:

$('li.mega').mouseover(function() { 
    $(this).data('mousedOver', true); 
}).mouseout(function() { 
    $(this).data('mousedOver', false); 
}); 

如果你有很多li.mega元素,你不關心哪一個是滑鼠移到,你可以設置父元素的值:

$('li.mega').mouseover(function() { 
    $(this).parent().data('mousedOver', true); 
}).mouseout(function() { 
    $(this).parent().data('mousedOver', false); 
}); 

對不起,錯過了一個關鍵的步驟:檢查價值。然後,您可以使用data方法是這樣獲得的價值這個元素:

if ($('li.mega').data('mousedOver')) { 
+0

好的,但'if(mousedOver)'仍然是'undefined'。因爲它在不同的功能。 – Iladarsda

+0

考慮到這將存儲在$ .cache-Object中,除了少一點混亂(還有更復雜的代碼)之外,哪裏有優點呢? – m90

+0

或者我需要檢查'mousedOver'的'.data'?如果是的話,怎麼樣? – Iladarsda

2
var megaTrue=0; 
$('li.mega').mouseover(function() { 
    megaTrue = 1; 
}); 

$('li.mega').mouseout(function() { 
    megaTrue = 0; 
}); 

集megaTrue作爲一個全局變量

+0

如何提醒或記錄變量值的變化? – Iladarsda

+0

這實際上不起作用。 'megaTrue'仍未定義 – Iladarsda