Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取用AJAX加载的select的值_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 获取用AJAX加载的select的值

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调

我正在通过AJAX加载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; });