JQuery .show不能在IE7中工作

这个.show和.hide在Firefox 3中很有用,但在IE 7中不行。当我在IE中的列表中单击<时,跨度隐藏但当我再次选择Between时不再显示。

难道我做错了什么?

 Between <     And  function onselectchange() { var lst = document.getElementById('lst'); var sp = document.getElementById('spanAnd'); if (lst.value == 'Between') { $('#spanAnd').show(); } else { $('#spanAnd').hide(); } }  

编辑:我试过onclick和onchange。

试试这个(把我留在评论中的一些东西放在另外两个答案中):

  

在页面加载时使用jQuery bind方法…它将有助于从表示逻辑中抽象出交互逻辑。

  

这就像它得到的一样简单……

注意:我刚刚注意到您正在检查选项的文本而不是选中框的值。 坦率地说,我认为这很愚蠢,但如果你出于某种原因需要这样做,你可以这样做:

  

要使我的原始建议有效,您需要将HTML更改为:

  

……正如我所说,有点像你想要做的事情。

尝试使用jQuery来查找和读取元素。 像这样的东西:

  function onselectchange() { var lst = $('#lst'); var sp = $('#spanAnd'); if ($(lst).val() == 'Between') { $(sp).show(); } else { $(sp).hide(); } } 

你有很多问题。

不包装在$(document).ready(); 执行脚本时可能无法加载该元素。

使用以数字开头的变量名称。 (糟糕的风格,甚至不确定是否允许)

使用与元素ID对应的变量名称。

(旧版本的IE允许您在不调用document.getElementById()的情况下使用ID.whatever)

混合jQuery / Standard DOM。

调用val()会为您提供选项值属性,而不是选项的文本

   And  

更新:请原谅我,如果这个答案是关闭的; 我不是jQuery用户。 这些是我的想法:

lst.value不是访问IE中select元素中元素的有效方法; 至少,我从未见过这样做过(或者是jQuery技巧?)

改为:

 if (lst.options[lst.selectedIndex].text == 'Between') { ... 

另请注意,我使用了“text”属性,因为这是标记之间的值。 value属性是应该存在于 >元素上的属性,例如:

首先,使用jQuery获取所选的选项文本是

 $("#lst option:selected").text(); 

如果您需要更多说明,请参阅此http://docs.jquery.com/Frequently_Asked_Questions#How_do_I_get_the_text_value_of_a_selected_option.3F 。

其次,要没有图书馆,

 var lst = document.getElementById('lst'); var ind = lst.selectedIndex; var text = lst.options[ind].text; 

这适用于IE和Firefox

   And