2011-11-30 32 views
-1

是否可以將元素傳遞給Jquery中的focusout函數?我想在一個聲明中將所有文本框聚焦事件綁定。所以我的解決辦法是讓他們都在同一類,然後像做jquery focusout函數

$(".class-name").focusout(function() { 
//do whatever 
}); 

但我想獲得事件的內容裏面的元素值,而無需通過id引用它,所以是像這樣的可能嗎?

$(".class-name").focusout(function(this) { 
alert($(this).val()); 
}); 

回答

9

對象假設你在實現focusout神奇的大自然blur,這就是你想要的:

$("#the-common-parent-of-all-inputs").focusout(function(e) { 
alert(e.target.value); 
}); 

您只需要將一個focusout綁定到輸入元素的公共父項。這是使用focusout的唯一原因。

你可能沒有意識到它,但是當你這樣做時$(".class-name").focusout它只會單獨綁定到每個元素,這會破壞focusout的整個目的。

+0

我在jquery.com上閱讀了此內容。 「這與模糊事件截然不同,它支持檢測父元素失去焦點(換句話說,它支持事件冒泡)。」我不太確定父母元素是什麼。現在看這個 – sarsnake

+0

@sarsnake,就是這樣的: '

'。現在,您只將單個聚焦綁定到FORM,因爲它是所有輸入的公共父級。而不是3個模糊事件,每個輸入一個。觸發模糊的特定輸入可通過'e.target'獲得。 「這個」總是指形式,因爲這是事件的約束。 – Esailija

2

你試過了嗎?它應該可以工作,但是沒有(!)「this」參數。 「this」將自動引用當前元素,不需要將其作爲參數傳遞給函數。只是省略它。

4

對於類似事件的內容(或任何其他jQuery的事件),你可以這樣做:

$(".class-name").focusout(function() { 
    //`this` refers to the object that was focusouted on 
}); 

this總是指事件發生在

+1

'this'會引用任何'.class-name'父類捕獲的冒泡事件,而不是模糊事件最初發生的底層元素。只有在'.class-name'是模糊事件發生的元素本身的情況下。 – Esailija