【问题标题】:jQuery - IF IN String or Array ConditionjQuery - IF IN 字符串或数组条件
【发布时间】:2013-01-14 22:17:31
【问题描述】:

使用 Jquery,我在下面 <select> 下拉列表的每个 <option> 中循环遍历名为 tags 的属性。

如果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 似乎更挑剔。

【问题讨论】:

    标签: jquery option custom-attributes


    【解决方案1】:

    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/

    【讨论】:

    • +1 您可以添加$(this).attr('selected', 'selected') 来选择选项。
    • $(this).attr('selected', 'selected') 似乎不起作用。或者它选择了一切。如何在遍历所有选项时选择该单个选项?
    【解决方案2】:

    , 拆分并检查呢?

    var tags = tag.split(",")
    if(tags.indexOf("6")!==-1){
        //do whatever manipulation you desire
    }
    

    【讨论】:

      猜你喜欢
      • 2019-05-06
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-09
      • 1970-01-01
      • 2021-09-08
      相关资源
      最近更新 更多