我試圖在jQuery中爲兩個select
元素捕獲change()
事件。我試圖在循環中完成,所以我不必剪切和粘貼相同的代碼。雖然var x = $("#"+fields[i]).val();
jQuery中的變量作用域問題
fields = ['foo', 'bar'];
for (var i=0; i < fields.length; i++)
{
$("#"+fields[i]).change(function() {
var x = $("#"+fields[i]).val();
alert(x);
});
}
<form>
<select id="foo">
<option value="first">first</option>
<option value="second">second</option>
</select>
<select id="bar">
<option value="third">third</option>
<option value="fourth">fourth</option>
</select>
</form>
EDIT
這條線具有問題
對不起,那是一個過於簡化的例子。我實際上想得到一堆附近的領域,而不必做一堆剪切和粘貼。這裏是我的實際代碼:
var fieldnames = ['start_date', 'end_date']
for (var i=0; i < fieldnames.length; i++)
{
var fieldname = fieldnames[i];
$("#event_"+fieldname+"_date, #event_"+fieldname+"_hour, #event_"+fieldname+"_minute, #event_"+fieldname+"_ampm").change(function(){
var d = $("#event_"+fieldname+"_date").val();
var h = $("#event_"+fieldname+"_hour").val();
var m = $("#event_"+fieldname+"_minute").val();
var ampm = $("#event_"+fieldname+"_ampm").val();
$("#event_"+fieldname).val(d + ' ' + h + ':' + m + ampm);
if ($("#event_"+fieldname).val() == " :"){
$("#event_"+fieldname).val("");
}
if (fieldname == "start_date")
{
$.validator.methods.validMoment.call(this, $("#event_"+fieldname).val(), $("#event_"+fieldname), null);
}else
{
$.validator.methods.validOptionalMoment.call(this, $("#event_"+fieldname).val(), $("#event_"+fieldname), null);
}
});
}
我想我可能只是產生,而不必擔心在Javascript中做任何技巧在Ruby中的代碼,但我很好奇...
使用:'var x = this.value;'http://jsfiddle.net/mLc5p/8/ – Joe