星期二, 3月 18, 2008

jQuery對select tag的操作

  • get
    • 取出選擇的值
      $("select#Club").val();
      $('select#Club option:selected').text(); 
      以上2方法在單選時相同,但複選時,
      val()會用逗號分開 ex. AA, BB
      text()不會 ex. AABB
    • 取出array
      $("select#Club").children("[@selected]").each(function(){
          alert(this.text());
      });
  • set
    • 使某option變為selected
      //使aaa為selected
      $("#select1").children().each(function(){
          if ($(this).text() == "aaa"){
              //jQuery給法
              $(this).attr("selected","true"); //或是給selected也可
      
              //javascript給法
              this.selected = true;   
          ;}
      });
      
      //直接指定... 上面的方法變的有點蠢... 誰寫的... 我....
      $('#select1').val("aaa");
      
      
    • 新增option
      $('select').append(new Option('text', 'value')); //之前好像誤寫成 jQuery("new option"); 歹勢呀~
    • 讓新增的option直接為selected
      //new Option([text], [value], [defaultSelected], [selected]
      var option = new Option(
                   'text'
                   , 'value'
                   , true     //html裡顯示selected
                   , true     //第四個參數即為selected
                 ); 
      $('select').append(option);
      
    • select下拉框的第二個元素為當前選中值
      $('select#Club)[0].selectedIndex = 1;//不知為何要加[0]
      ===== K. T. Chen 提到 =====
      在$("")加[0]的意思是把jQuery物件轉為DOM物件。這樣子jQuery物件才能使用DOM底下的selectedIndex方法。
  • event
    //改變時的事件
    $("select#Club").change(function(){ //事件發生
        //一次印出
        alert($(this).val());
    
        //印出選到多個值
        jQuery('option:selected', this).each(function(){ 
            alert(this.value);  
        });
    });
  • 移除 removeOption(index/value/regex[, selectedOnly])
    $('select#Clubs option:selected').remove();
//純javascirpt
<select onchange="alert('Index: ' + this.selectedIndex
    + '\nValue: ' + this.options[this.selectedIndex].value)">
    ...
</select>

參考

11 則留言:

匿名 提到...

剛好查詢Select Contol的用法,來感謝一下

海狗 提到...

我也剛好正在查找select的控制用法,非常感謝您~

易春木 提到...

多謝...找到你的筆記

K. T. Chen 提到...

$('#select_id')[0].selectedIndex = 1;//不知為何要加[0]

=====================================

在$("")加[0]的意思是把jQuery物件轉為DOM物件。這樣子jQuery物件才能使用DOM底下的selectedIndex方法。

fishjerky 提到...

原來是用dom的selectedIndex呀
也是 有道理...

Allen J 提到...

不錯不錯
謝謝

匿名 提到...

不錯喔,多謝了

Unknown 提到...

真是簡短實用的好文章呢^^感謝

Derek Leung 提到...

本來到這裡是想看 selectedIndex 的 jQuery 寫法,誰知原來你連為什麼要加 [0] 也不知道… =_="

匿名 提到...

我試了一下 select 增加 option 的作法發現沒作用,後來找到另一種寫法確定可以正確運作
$('#select1').append($("<option></option>").attr("value", "value").text("text")

fishjerky 提到...

可能寫錯吧...應該是這樣...
$('#select1').append(new Option('newText', 'newValue'));