Javascript 获取用AJAX加载的select的值
我正在通过AJAX加载select,然后尝试将select的值用于另一个AJAX调用 因此,我:Javascript 获取用AJAX加载的select的值,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在通过AJAX加载select,然后尝试将select的值用于另一个AJAX调用 因此,我: <select id ="thisSelect"> <option value = "someValue1"> Some Value 1 </option> <option value = "someValue2"> Some Value 2 </option> </select> 它只注册select在原始AJAX调
<select id ="thisSelect">
<option value = "someValue1"> Some Value 1 </option>
<option value = "someValue2"> Some Value 2 </option>
</select>
它只注册select在原始AJAX调用中加载的第一个值,不捕获任何更改
有什么想法吗?我试过:
$('#thisSelect').on('change', function() {
var value = (this.value);
//or
alert(this.value);
});
在同一个$(document).ready块中,但“value”显示为未定义,并且我没有收到警报框 听起来您的内容是在运行
on change
语句之后加载的
改为对更改使用委派事件处理程序:
$(document).on('change', '#thisSelect', function() {
var value = $(this).val();
alert(value);
});
这是通过侦听事件冒泡到一个未更改的祖先元素来实现的(如果没有更接近的,则默认为document)。然后在事件发生时应用jQuery选择器,因此该项只需在事件发生时匹配即可。您可以尝试
var array = [];
var i = 0;
$("#thisSelect").children().each(function () { array [i++] = $(this).val; });
它会将这些值放入一个数组中,然后您可以访问该数组。ajax调用的js在哪里?如果通过AJAX加载select标记,document ready中的函数将永远不会知道它的存在。jQuery在运行时只知道页面中的元素,因此jQuery无法识别添加到DOM中的新元素。为了防止这种使用,将事件从新添加的项冒泡到DOM中的某个点,当jQuery在页面加载上运行时,该点就在DOM中。许多人使用
document
作为捕获冒泡事件的地方,但没有必要在DOM树中占据那么高的位置。理想情况下,感谢您提供的详细答案-对于jQuery来说仍然是新手,我对此表示感谢
var array = [];
var i = 0;
$("#thisSelect").children().each(function () { array [i++] = $(this).val; });