jquery,选择所有选项按钮不在IE中工作,但在Firefox中工作

时间:2010-11-24 20:41:19

标签: jquery html perl cgi

在我的cgi代码的某处,我生成了这个:

my $PARAMETER_HTML .= "<select name='parameters' id='parameters' size='10' multiple='multiple'>";
foreach my $values (sort @PARA_VALUES)
{
    $PARAMETER_HTML .= "<option value=\"" . $values . "\" >" . $values  . "</option>";
}
$PARAMETER_HTML .= qq|</select>|;

稍后我会生成一个按钮:

<button id="select_all1"><b>Select All<br>Parameters</b></button>       

稍后我会生成此脚本代码:

$("#select_all1").click(function() {
    $("#parameters").each(function(){ $("#parameters option").attr("selected","selected"); });                
});

它适用于Firefox,但不适用于IE。是否有针对IE的修复(在版本7上测试)?

3 个答案:

答案 0 :(得分:2)

首先,您不需要$("#parameters").each循环;它没有做任何事情,因为#parameters引用了一个元素(select元素)。

其次,下面的最小版本适用于包括IE7在内的各种浏览器。我会检查您的页面来源以确保您生成的HTML是正确的,然后尝试将内容减少到有效的最小页面。然后小心地把东西放回去。

<html>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script>
$(document).ready(function(){
   $("#select_all1").click(function() {
      $("#parameters option").attr("selected","selected");
   });
});
</script>
<button id="select_all1"><b>Select All<br>Parameters</b></button><br />

<select id="parameters" multiple="multiple">
  <option>one</option>
  <option>two</option>
  <option>three</option>
</select>

</html>

答案 1 :(得分:1)

我想的问题是使用<button>我用<div>替换它,它至少在IE8中运行良好。

演示:http://jsfiddle.net/wtw4e/

修改

另一个答案说它与<button>一起工作正常,所以很可能是IE通常比其他浏览器更加挑剔代码正确性的问题。

答案 2 :(得分:1)

我会仔细检查输出HTML,因为您的代码似乎在FF4和IE8中正常运行。 (我没有IE7开始测试。)这是你在jsFiddle中运行的代码:http://jsfiddle.net/CXQxT/

顺便说一句 - 你可以简化你的jQuery。不需要.each()。

$('#select_all1').click(function() {
    $('#parameters option').attr('selected', 'selected');
});

在此处更新了jsFiddle:http://jsfiddle.net/TWBRQ/