2011-08-24 53 views
1

如果我有類似以下的代碼;關於jQuery事件的問題

if (x == "0") 
{ 
    $("input:checkbox").parent().mouseover(function() { 
    //Some code 
    } 
} 

我的問題是將代碼獲得每個鼠標懸停執行,或者它會首先檢查X ==「0」條件,然後火?

換句話說,$("input:checkbox").parent().mouseover()代碼與使用bind()或live()函數獲得的代碼類似(每次在該事件中被觸發)並且「x」的封閉條件無關緊要?

有沒有什麼辦法可以將事件與「x」條件聯繫起來,如僅在x爲真時限制其範圍?

我不確定我的問題是否真的有效。但如果你能澄清,這將是非常好的。

+0

取決於它如何被調用,但是如果您擔心所有時間都會調用鼠標懸停,則可以解除綁定並重新綁定它。 – Matt

+0

是不是有一個原因,你不只是在'mouseover'處理程序中引用'x'? ''mouseover'處理程序被綁定後,'x'會在某個時候改變嗎? – user113716

回答

2

我的問題是將代碼執行每個mouseover或它會 首先檢查x ==「0」條件,然後觸發?

如果x ==「0」在你寫這段代碼的地方,它會在每個mouseover上執行。

如果你想只執行一段代碼,如果x ==「0」,嘗試

var x = "0"; // or any other value. 
$("input:checkbox").parent().mouseover(function() { 
    if(x == "0") { 
    // code goes here 
    } 
} 
1

一旦鼠標懸停事件連接,將火無論X的你可以得到你的效果通過檢查回調函數中的X來尋找。

var x = 0; 

$("input:checkbox").parent().mouseover(function() { 
    if(x != 0) { return; } 
    // some code 
} 
+2

儘管這需要'x'具有全局範圍。 –

+0

好點,我會解決的。 –

2

該事件將被附連使得x具有值= 0。然後將它在每個onMousehover被執行的第一次,則可以分離事件,如果x爲0。

if (x == "0") 
{ 
    $("input:checkbox").parent().mouseover(function() { 
    //Some code 
} else { 
    $("input:checkbox").parent().unbind('mouseover'); 
} 
不同