如何在选择框的特定选项上获取点击事件

时间:2015-05-05 08:09:36

标签: jquery jquery-selectbox

我有一个选择下拉列表:

<select multiple="" id="search_skills" name="search_skills[]">
    <option value="all">All</option>
    <option value="1">PHP</option>
    <option value="2">JAVA</option>
    <option value="3">.NET</option>
</select>

现在,当用户首先选择“全部”时,应选择所有值。所以我想要一个点击事件。 这是我正在尝试的。但它不起作用。

$(function(){ 
  $("select[name='search_skills[]']").change(function() {            
    if ( $("select[name='search_skills[]']")[0].selectedIndex === 0 ) {
        var sel_val = $("#search_skills").val();
        alert(sel_val);
        if(sel_val == 'all'){
            $("#search_skills > option").prop("selected","selected");
        }
        else if(sel_val.indexOf('all') == '-1'){
            $("#search_skills > option").removeAttr("selected");
        }
        $('#search_skills').selectpicker('refresh');
     }
  });
}); 

请帮忙。

3 个答案:

答案 0 :(得分:0)

使用jQuery prop

&#13;
&#13;
$('#selectall').click(function() {
    $('option').prop('selected', true);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select multiple="" id="search_skills" name="search_skills[]">
    <option id="selectall" value="all">All</option>
    <option value="1">PHP</option>
    <option value="2">JAVA</option>
    <option value="3">.NET</option>
</select>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以尝试使用prop()功能:

&#13;
&#13;
$(document).on('click', '#search_skills option[value="all"]', function() {
  var that = $(this);
  var opt = $('#search_skills > option');
  if (!that.is('selected')) {
    opt.prop('selected', true);
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select multiple="" id="search_skills" name="search_skills[]">
    <option value="all">All</option>
    <option value="1">PHP</option>
    <option value="2">JAVA</option>
    <option value="3">.NET</option>
</select>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

尝试 -

$('#search_skills option:first').on('click', function() {
var that = $(this);
  var opt = $('#search_skills > option');
  if (!that.is('selected')) {
    opt.prop('selected', true);
  }
})

DEMO