2011-05-04 33 views
0

我正在使用选择下拉触发不同的事件,通过附加到每个选择独特的类。例如:jQuery在选择触发器不工作,即在

<select name='topic' class='long box validate-select'> 
    <option value="null">Questions?</option> 
    <option value='First' class='select1'>Question 1</option> 
    <option value='Second' class='select2'>Question 2</option> 
</select> 

<div id="faq1"> - </div> 
<div id="faq2"> - </div> 

<script> 
    $(document).ready(function() { 
     $('option.select1').click(function(){ 
      $('#faq1').fadeIn('fast'); 
      return false; 
     }); 
     $('.select2').click(function(){ 
      $j('#faq2').fadeIn('fast').siblings().hide(); 
      return false; 
     }); 
    }); 
</script> 

这工作正常在Firefox ..但没有在IE浏览器(我检查7和8)。有谁知道我应该怎么写这个让IE快乐?

回答

4

尝试将.change()改为连接到选择列表。

$("select[name='topic']").change(function(){ 
    if($(this).val() === "First"){ 
    $('#faq1').fadeIn('fast'); 
    } 
    if($(this).val() === "Second"){ 
    $j('#faq2').fadeIn('fast').siblings().hide(); 
    } 
}); 

Example on jsfiddle

+0

这就是门票!谢谢 :) – Zac 2011-05-04 16:57:57

0

onclick火灾下拉元素作为一个整体,而不是个别项目上。

1

我不认为你可以依靠click事件工作option元素。以下是我可以做到这一点:

<select id="myselect" name='topic' class='long box validate-select'> 
    <option value="null">Questions?</option> 
    <option value='First' class='select1'>Question 1</option> 
    <option value='Second' class='select2'>Question 2</option> 
</select> 
<div id="faq1" class="faq"> 
    question one 
</div> 
<div id="faq2" class="faq"> 
    question two 
</div> 
<script type="text/javascript"> 
    $(function() { 

    $('.faq').hide(); 

    $('#myselect').change(function() { 

     $('.faq').hide(); 
     switch ($('#myselect option:selected').val()) { 
     case 'First': 
      $('#faq1').fadeIn('fast'); 
      break; 
     case 'Second': 
      $('#faq2').fadeIn('fast'); 
      break; 
     } 

    }); 

    }); 

</script> 
0

我已经得到了同样的答案一般为别人,而是另外,如果你正在做同样的事情与你的所有下拉菜单选项,你可以通过只是避免if或case语句更改下拉列表中的值。

一个例子是http://jsfiddle.net/UQKBQ/2/。第二个下拉菜单比第一个下拉菜单有更简单的更换功能。

这里的关键行是:

$('#'+this.value).fadeIn('fast').siblings().hide(); 

这使用下拉列表的值来构建你展示你的DIV的ID。这种技术并不总是可能的,所以开关一个很好理解,但在像这样的一对一映射的情况下,将元素ID存储在下拉的值中可以减少键入(或复制和粘贴) 。