關於jQuery如何讀取及設定<select>元素的選取值,對其用法一直有些含糊,今天摸個清楚,順便為文一篇作為紀念:

$("<select id='s1'><option value='1'>One</option>" +
  "<option value='2'>Two</option>" +
  "<option value='3'>Three</option></select>").appendTo("body");
//直接用val("...")可以選取特定value的選項
var s1 = $("#s1").val(2);
//val()可以取得選取項的值,find(":selected").text()則可得選取項的文字
//直接text()會傳回所有選項的文字大串連,不要誤用
alert(s1.val() + "." + s1.find(":selected").text());
//面對多選式select也不是問題,例如切成multiple,並選取所有選項
s1.attr({ "multiple":"true", size:"3" }).find("option")
.each(function() { this.selected = true; });
//薑 薑 薑 薑~~~ val()傳回的可是字串陣列呢!
var a = s1.val();
if ($.isArray(a)) alert(a.join(","));
//要選取特定選項,傳陣列進去就搞定了
a = ["2", "3"];
s1.val(a);

註: 以上程式碼可以直接貼到Mini jQuery Lab的Script區,馬上測試效果。


Comments

# by evakey

不知道有沒有隱藏 option 的方法?

# by 咖啡喵

<ul> <li value="1">a</li> <li value="2">b</li> <li value="3">c</li> <li value="4">d</li> </ul> 這樣有辦法取到每一個 li 裡的 text 值嗎?

# by 咖啡喵

自問自答 :p var l = $("ul > li").eq(0); // 數字從 0 ~ n-1 alert (l.text());

Post a comment