在我的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上测试)?
答案 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中运行良好。
修改强>
另一个答案说它与<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/