使用复选框和jQuery在下拉框中切换隐藏某些值


Toggle hiding certain values in a dropdown box using a checkbox and jQuery

我有一个下拉框,里面装满了从数据库中提取的选项。这些选项中的每一个都将具有"Y"或"N"的活动指示器值。我有一个复选框,它将包括所有选项或仅包括活动选项。

我目前可以选择完美地从数据库中提取。输入选项的for循环如下所示:

for ($i = 0; $i < count($category_record); $i++) {
if($category_record[$i]->getActiveInd() == "Y")
              {
    echo '<option value="'.$category_record[$i]->getId().'" '.$checked.' >&nbsp;&nbsp; - '.$category_record[$i]->getTitle().'</option>';    
              }
else if($category_record[$i]->getActiveInd() == "N")
              {
    echo '<option id="inactive" value="'.$category_record[$i]->getId().'" '.$checked.' >&nbsp;&nbsp; - '.$category_record[$i]->getTitle().'</option>';    
              }

因此,如果该值是非活动值,则该选项的id将为"#inactive"。

复选框很简单:

<input type="checkbox" name="search_active" id="checkbox" />

我现在的jQuery是这样的:

$(document).ready(function() {  
 $('input[type=checkbox]').click(function(){
    var $this = $(this);
    if($this.is(':checked'))
    {
        $('#inactive').show();
    }
    else
    {
        $('#inactive').hide();
    }
 });
});

这段代码的作用很小,因为当取消选中复选框时,它会隐藏不活动的值,但它只会隐藏遇到的第一个值,而不是所有值。我已经检查了这些元素,它们仍然肯定有#inactive id,但它们不会隐藏。我一直在寻找答案,但一直找不到,我做错了什么?

对于多个元素,您应该使用类.active.inactive或创建自己的属性,如state。

PHP:

for ($i = 0; $i < count($category_record); $i++) {
if($category_record[$i]->getActiveInd() == "Y")
              {
    echo '<option value="'.$category_record[$i]->getId().'" '.$checked.' >&nbsp;&nbsp; - '.$category_record[$i]->getTitle().'</option>';    
              }
else if($category_record[$i]->getActiveInd() == "N")
              {
    echo '<option class="inactive" value="'.$category_record[$i]->getId().'" '.$checked.' >&nbsp;&nbsp; - '.$category_record[$i]->getTitle().'</option>';    
              }

JS:

$(document).ready(function() {  
 $('input[type=checkbox]').click(function(){
    var $this = $(this);
    if($this.is(':checked'))
    {
        $('.inactive').show();
    }
    else
    {
        $('.inactive').hide();
    }
 });
});

使用class‘inactive’作为下拉列表中的选项,而不是id。并使用class将js修改为show()和hide()。