2012-11-13 89 views
2

我已經遇到了幾次現在,我希望使用document.on()來操作元素,但無法弄清楚如何在沒有事件的情況下使用.on()。在沒有事件處理程序的情況下使用document.on

我經常使用ajax將元素注入到DOM中,並經常需要使用document.on()綁定到這些注入的元素。當我希望選擇一個元素並獲取它的信息時,這非常有效。

例如,通過點擊事件附加到一個選擇,一個寫道:

$(document).on('click', '.mledit', function(event) { 
    alert($(this).val()); 
} 

但是,如果我想將焦點設置到該元素是什麼?我會怎麼做?我已經嘗試過:

$(document).on('focus', '.mledit'); 

而且我還有什麼不該嘗試的。

我需要這樣做的原因是因爲此刻(以前我在這裏),標準$('.mledit').focus();不起作用。其他一切看起來都沒問題,但那條指令並不是。所以,我想知道在這種情況下是否可以使用document.on()。

回答

2

此:

$('.mledit')[0].focus(); 
+0

你知道你的東西。謝謝你,Sime。 – gibberish

+0

幕後發生了什麼?爲什麼這個工作? – gibberish

+1

@gibberish爲什麼* what *工作?你在問''[0]'嗎?如果是,那麼基本上當你在jQuery中使用一個選擇器時,它會返回一個匹配元素的數組,'[0]'只是說使用匹配的第一個元素。 – Jack

1

當你想將焦點設置..只是做 - 但如果你有一個以上的,你必須指定一個將焦點設置到使用.EQ()或[]

$('.mledit').focus() 

的jQuery還提供該trigger()方法,爲您在事件傳遞給觸發

0

你將代替上使用觸發器。

$(SELECTOR).trigger(EVENT_TYPE); 
0

當你需要對符合 「選擇」 的元素觸發事件 「富」,使用此語法:

$('selector').trigger("foo"); 

你的情況:

$('.mledit').trigger("focus"); 
3

.on是爲綁定事件,您正在尋找的是一種對元素上的事件trigger的方法。

例如

$('.mledit').trigger('focus'); 

與此同時,jQuery的也有一些方便/快捷功能,該罩下將委託要麼。對或.trigger取決於它們是如何調用。

例如,您還可以使用focus方法來觸發焦點

$('.mledit').focus() 

引擎蓋下它真的只是委託給trigger方法,但是如果你在一個函數時它反而會綁定該功能通過selecter

剛剛看到您的編輯。

我不確定爲什麼你的焦點事件不起作用使用時使用$('.mledit').focus()但我懷疑這是因爲你匹配多個一個元素,你只能專注於一個元素。解釋當你使用jQuery選擇器時,你得到的是一個jQuery對象,當你在這個返回的jQuery對象上調用方法時,實際上是在所有匹配的元素上調用它。

作爲一種快捷方式來訪問匹配的元素數組的第一個元素,你會經常看到

$('#someSelecter')[0] 

所以你的情況,以明確觸發只有一個焦點事件(第一個匹配)元素

您可以使用

$($('.mledit')[0]).focus() r 

的原因雙重包裝是因爲[0]返回普通的DOM元素沒有jQuery方法(包裝創建一個jQuery對象)。

+0

非常感謝這個偉大的解釋。 +1引擎蓋下的信息。 – gibberish

相關問題