使用jQuery删除基于selectedIndex的类

时间:2013-01-28 05:17:02

标签: jquery selectedindex

好吧所以我试图基于下拉菜单的selectedIndex删除一个类,具体来说,当有人选择我的下拉菜单中的第二个选项(selectedIndex为1)时,我希望显示带有id = hide的div,并且如果他们选择不同的选项,他们会再次消失。

这是我的HTML代码:

<div id="product-variants">      
                <select id="product-select" name="id">

                        <option value="269270508">No Charm</option>

                        <option value="269270608">Heart (Add $25)</option>

                        <option value="269270614">Horseshoe Bead (Add $25)</option>

                        <option value="269270666">Crystal Horseshoe (Add $25)</option>

                        <option value="269270692">Cowgirl Cross (Add $25)</option>

                        <option value="269270732">Lucky Charm (Add $35)</option>

                        <option value="270460652">Round (Add $25)</option>

                        <option value="269270562">Small Star (Add $20)</option>

                        <option value="269270598">Large Star (Add $25)</option>
    </select>
</div>

<div id="hide" class="hidden"><form>
<input id="checkbox" type="checkbox" name="vehicle" value="Bike">Engraving?<br>
</form>
    <form>
Engraving Message: <input type="text" name="engraving"><br>
        </form></div>

我的剧本:

var choice = getElementById("product-select").selectedIndex;

if (choice == 1){

    $('#checkbox').change(function(){
        $('#hide').removeClass('hidden');
    });

}

和CSS:

.hidden {
    display:none
}

jfiddle上的链接:http://jsfiddle.net/AFrjz/2/

我一直在努力解决这个问题几个小时,似乎无法做到这一点。

非常感谢!

3 个答案:

答案 0 :(得分:2)

您可以使用jQuery方式执行所有操作:http://jsfiddle.net/AFrjz/6/

$('#product-select').change(function () {
   var choice = $("#product-select option:selected").index();
   if (choice == 1) {
       $('#hide').removeClass('hidden');
   } else {
       $('#hide').addClass('hidden');
   }
});

您必须在更改<select>时获取所选索引,然后在if中进行比较。

无需在checkbox上调用更改功能来隐藏或显示自己。

答案 1 :(得分:0)

您需要进行以下更正。

  • 你有文件。在getElementById之前。将getElementById更改为 document.getElementById
  • 您使用隐藏复选框绑定了更改事件,因此您无法使用 触发事件显示复选框以选择它。
  • 在事件处理程序中添加条件,而不是在条件中绑定事件。

<强> Live Demo

$('#checkbox').change(function(){    
   var choice = document.getElementById("product-select").selectedIndex;
    alert(choice)
   if (choice == 1){
     $('#hide').removeClass('hidden');
   }
});

要查看removeClass的效果,请在选择中选择第二项,然后选中复选框。

答案 2 :(得分:0)

试试这个

if (choice == 1){

  //$('#checkbox').change(function(){ you are callinjg a change event here... so the hide is not fired..
    $('#hide').removeClass('hidden');
 // });

}

<强>已更新

  

当有人在我的下拉菜单中选择第二个选项(selectedIndex为1)时,我希望显示带有id = hide的div,如果他们选择了不同的选项,则会再次消失。

我使用了selectbox的更改事件..并检查了所选的值..如果value是你的第二个选项的值..然后删除class else addclass

$("#product-select").change(function(){
 var choice = $(this).val()

 if (choice == '269270608'){

//$('#checkbox').change(function(){
    $('#hide').removeClass('hidden');  //remove class here
//});

 }else{
    $('#hide').removeClass().addClass('hidden');  //else addclass
 }

});

fiddle here