3

Jqueryでは、以下のtags各ドロップダウン<option>で、という名前の属性をループしています<select>

tags属性 に番号6が存在する場合は、2つのオプションを事前に選択しておくとよいでしょう。

<select name="someFun" id="someFun"  multiple="multiple">
  <option value="1" tags="4,6,7">something</option>
  <option value="44" tags="2">something</option>
  <option value="61" tags="1,3,6">something</option>
  <option value="44" tags="2">something</option>
</select>

<script language="javascript" type="text/javascript">
$(document).ready(function(){

  var preselectedtag = '6'; // auto select any with 6

  $("#someFun > option").each(function() {
     var tag = $(this).attr("tags");

     /* change attr of this option to "selected" if 6 exists in var tag */

  });

});
</script>

私はここでいくつかの助けを使うことができます。これを行うための最良の方法はありますか?
PHPでは通常in_array()関数を使用しますが、javascriptの方がはるかに扱いにくいようです。

4

2 に答える 2

4

jQueryには次のinArray()機能があります。

var tags = $(this).attr("tags").split(",");
if ($.inArray(preselectedtag, tags) > -1) {
  alert("Tag " + preselectedtag + " detected!");
}

編集

検出されたオプションタグを選択するOPのコードのリファクタリングバージョン:

$(function(){
  var preselectedtag = '6',
      selected = [];
  $("#someFun > option").each(function() {
    var n = $(this), 
        tags = n.attr("tags").split(",");
    if ($.inArray(preselectedtag, tags) > -1) {
      selected.push(n.val());
    }
  });
  $('#someFun').val(selected);
});

http://jsfiddle.net/zFBVT/

于 2013-01-30T22:39:41.163 に答える
1

それを分割して,チェックするのはどうですか?

var tags = tag.split(",")
if(tags.indexOf("6")!==-1){
    //do whatever manipulation you desire
}
于 2013-01-30T22:39:00.423 に答える