我通过AJAX加载一个select,然后尝试将select的值用于另一个AJAX调用。
所以我有:
<select id ="thisSelect">
<option value = "someValue1"> Some Value 1 </option>
<option value = "someValue2"> Some Value 2 </option>
</select>
这很好。然后我试图像这样访问thisSelect的值:
$(document).ready(function(){
var value = $('#thisSelect').val();
alert(value);
});
它只注册在原始AJAX调用中加载的select的第一个值,并且不捕获任何更改。
有什么想法吗?我试过了:
$('#thisSelect').on('change', function() {
var value = (this.value);
//or
alert(this.value);
});
在同一个$(文件).ready块中,但是&#39;值&#39;显示为未定义,我没有得到警告框。
答案 0 :(得分:2)
听起来你的内容是在on change
语句运行后加载的。
使用委托事件处理程序代替:
$(document).on('change', '#thisSelect', function() {
var value = $(this).val();
alert(value);
});
这可以通过监听事件来冒泡到一个不变的祖先元素(如果没有更接近的话,文档是默认的)。然后它在事件时应用jQuery选择器,因此该项只需匹配。
答案 1 :(得分:0)
你可以尝试
var array = [];
var i = 0;
$("#thisSelect").children().each(function () { array [i++] = $(this).val; });
它会将值抛出到您可以访问的数组中。