2010-02-20 97 views
0

亲爱的ALL,我试图做的事情很简单,但不能让我的头在句法。使用下拉列表来隐藏/显示与Jquery

我有一个下拉列表。选项有两种类型。如果选择了类别为“less_than_3”的选项,我们会看到一个提醒。 如果一个选项类'更大',我们看到不同的警报。

继承人我尝试:。 (请注意我本来有一个工作版本通过直接连接单击处理的OPTION元素,但这只在Firefox中工作,所以我改变了我的做法

$('#time_at_address').change(function() { 
    if ($(this).children('.less_than_3:selected')) { 
     alert('less than 3!'); 
    } 
    if ($(this).children('.greater_than_3:selected')) { 
     alert('greater than 3!'); 
     } 
    }); 

回答

0

我设法用不同的方法来解决这个问题。通过使用val()不是通过类名进行过滤。

这样..

$('#time_at_address').change(function() { 
      if ($(this).val() == 'less than 1') { 
        $('#address_less_than').show(); 
      } 
      else if ($(this).val() == '1 year') { 
        $('#address_less_than').show(); 
      } 
      else if ($(this).val() == '2 years') { 
        $('#address_less_than').show(); 
      } 
      else { 
       $('#address_less_than').hide(); 
      } 
    }); 

但谁能告诉我...是不可能的链条中的人第一语句(IF和两个ELSE IFS)在一起吗? (因为他们返回相同的结果。)

我试过使用两个垂直管道字符,但它没有工作

+0

尝试myval = $(this).val(); (myval =='less than 1')||(myval =='1 year')||(myval =='2 years')){$('#address_less_than')。show(); } else {$('#address_less_than')。hide(); } – 2010-02-21 01:42:17

+0

是的,它的确如此!感谢那个Mark。它减少了我的代码。 任何想法为什么它需要在一个变量||。上班? – swisstony 2010-02-21 03:37:34

0

我不知道是否一个空数组计算为在JS false所以要确保你可以使用:。

$(this).children('.less_than_3:selected').length > 0 

语法看起来很好,我想你的实际的问题是该警示框显示出来

+0

感谢Felix。但是'.length> 0'会抛出一个错误。 对于clarfiy--我所要做的就是当用户从列表中选择某个选项时,会显示某个DIV。 (如果他们选择不同的选项,将显示不同的DIV)> 我只是使用警报来简化事情。 即时通讯不知道如果我应该使用:选择(当我看着萤火虫的属性是甚至没有) – swisstony 2010-02-21 00:10:30