【发布时间】:2012-05-05 01:19:10
【问题描述】:
这个 html 完全可以在 chrome 中运行,但不能在 IE 中运行
文件很简单,只有两个功能
1:点击添加按钮,第一行将被克隆并放在添加按钮之前
2:点击组合框,第二个选项将被删除。
现在问题是函数 2
1 .在 IE 中,加载此页面,然后单击添加按钮添加一些组合框
2 。单击第一个组合框,您将不会在组合框中看到第二个选项(这是正确的结果)
3 .单击第二个组合框或其他克隆的组合框,然后您会看到第二个选项仍在组合框中,因此它没有被删除。 (这不是正确的结果)
4 。如果你在开发者工具中看到源代码,你可以看到第二个选项被移除了。
那么,如何去掉 IE 中的选项?
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
jQuery(document).ready
(
function()
{
$('#add').click(function(){
$(this).parent().parent().before($('tr').eq(0).clone(true));
});
$('select').focus(function(){
$(this).find('option').eq(1).remove();
});
}
);
</script>
</head>
<body>
<table>
<tr>
<td>
<select>
<option>1</option><option>2</option><option>3</option>
</select>
</td>
</tr>
<tr>
<td><input id="add" type="button" value="add"/></td>
</tr>
</table>
</body>
</html>
【问题讨论】:
-
您的代码似乎在使用和不使用 .live() 的情况下都可以正常工作(即使根据我的说法,如果没有 live,它也不应该工作)。如果您执行一些操作并检查源,那么一切都会按计划进行。 IE 似乎并没有更新它的复选框内容,我不知道为什么会这样。 :(也许如果你告诉我们你为什么这样做,我们可以找出一个 IE 友好的解决方案?:)
-
我试过 .live() 和 .live(),live 是工作,on 是不工作,所以看来 .on() 不能 100% 替代 .live()。但我仍然想知道为什么 .on() 和 .focus() 在 IE 中不起作用(在 IE8 和 9 中测试),因为 .live() 有性能问题,如果我最终找不到原因,那么我会使用 .居住()。我这样做是因为我让用户动态添加组合框列表,然后选择该选项。但是如果之前选择过,则不允许选择相同的选项,所以我需要搜索所有选项,如果选择,请删除该选项。
标签: javascript jquery internet-explorer select option