我無法從我正在通過ajax
加載的選擇列表中獲取.val
。它似乎只給我第一個選項的價值,不管我是否改變選擇本身。奇怪的是我在控制檯中檢查了$("select").val();
和$("select").find(":selected");
,並且查找選擇返回一個數組,其中第一個項目和我當前選擇的項目。所以它似乎是選擇了新的並保留第一個項目,但val
只是返回第一個項目。獲取通過ajax加載的選擇列表的.val
我三重檢查了我的文件,以確保沒有另一個別的地方,而且沒有。
這裏是我的代碼:
拳頭追加我的選擇框(與其他事物)的點擊動作
var statusCheck = "<div class='confirmContainer' style='display:none;'><p class='confirmText'>Change Status of item(s).</p><select class='statusChangeUsr' name='statusHere'></select><button class='smallResultsButton submitStats'>Submit</button><button class='smallResultsButton cancelStats'>Cancel</button></div>";
$(".actionsToolbar3").append(statusCheck);
然後在接下來的點擊帶來的選項列表中的
$.ajax(
{
cache: false,
url : "/listUserStatuses",
type : "GET",
success:function(data, textStatus, jqXHR) {
$.each(data.statuses, function() {
$(".statusChangeUsr").append("<option value=" + this.id + " >" + this.name + "</option>");
});
},
error: function(jqXHR, textStatus, errorThrown)
{
alert("Error");
}
});
然後在第三次點擊我去從選定的選項得到的值與
$(".statusChangeUsr").val();
問題是,它每次都返回3(這是第一個選項的值)。正如前面提到的,我發現,如果我把$(".statusChangeUsr").find(":selected");
在開發者控制檯(鉻)我得到以下 -
[<option value="3">Active</option>, <option value="5">On-Hold</option>]
3是第一項和5爲實際的選擇項的值的值。最終目標是返回當前選定項目的價值(在上述案例中爲5)任何幫助將不勝感激。
凡在你的代碼,你實際上是調用$( 「statusChangeUsr。」)VAL()?在$(document).ready函數中?在您通過ajax加載後調用的獨立函數中?如果在初始化過程中select語句中只有1個選項,或者在實際更新類之前調用該類,jQuery將無法識別ajax加載的選項。 – Michael
看起來就像jQuery一樣,兩個選項都被選中,否則它只會在查找調用中返回一個元素。 –