我有幾個<select>
盒子都使用相同的前綴,我想設置一個遞歸函數來爲我做主要工作。使用jQuery和.change()選擇html元素id
$('[id^="by_"]').change(function(e)
{
var elem = e;
console.log(e.value);
});
基於這段代碼我的意圖很清楚嗎?我在正確的軌道上嗎?
控制檯打印出:undefined
我有幾個<select>
盒子都使用相同的前綴,我想設置一個遞歸函數來爲我做主要工作。使用jQuery和.change()選擇html元素id
$('[id^="by_"]').change(function(e)
{
var elem = e;
console.log(e.value);
});
基於這段代碼我的意圖很清楚嗎?我在正確的軌道上嗎?
控制檯打印出:undefined
我認爲你是在正確的軌道上 - 你正在使用的選擇匹配「by_」的前綴,並且將更改事件綁定到所有這些事件。確保你把它放在$(document).ready
或類似的地方。你對這段代碼有任何問題嗎?而不是使用e
參數,我只需在函數內部使用this
來引用元素,並使用$(this)
來獲取它的jQuery對象。因此,要獲得的價值,你會使用:
this.value
// or
$(this).val()
(忽略e
和elem
的東西,雖然它不會是一個壞主意來存儲$(this)
在像elem
所以你可以有它的一個引用而不是重新創建jQuery對象每次你需要它的時候)
當使用回調與jQuery的事件,回調的(第一個)參數是一個event
對象,解釋有關事件發生很多事情(http://api.jquery.com/category/events/event-object/)並沒有持有這個元素 - 這就是this
!
既然你已經使用jQuery,爲什麼不能是這樣的:
$('[id^="by_"]').change(function(e)
{
var $elem = $(this);
console.log($elem.val());
});
e
在你的代碼是不具有value
財產的事件對象,你應該使用this
代替:
$('[id^="by_"]').change(function(e) {
var elem = this;
console.log(this.value);
});
或者,如果你想使用event
對象,你可以使用target
屬性:
e.target.value
工作是否有問題.. ?? –
我認爲你在正確的軌道上 - 你使用的選擇符匹配前綴「by_」,並且你將「change」事件綁定到所有這些事件。確保你把它放在'$(document).ready'或類似的地方。你對這段代碼有任何問題嗎?除了使用'e'參數外,您還可以在函數內部使用'this'來引用元素,使用'$(this)'來獲取它的jQuery對象。 – Ian
@ianpgall這正是我需要的!你可以添加一個答案,以便我可以投票嗎? –