2011-06-14 63 views
0

谁能解释这一点?jQuery .remove()在IE8中不会触发

在我的功能中,我使用.remove()删除<select>框中的一行(我的意思是删除<option>),但它为什么不起作用?

在FF它看起来不错,但在IE8 ...失败。

让我们看一个例子:

<form name="test"> 

我有两个<select>箱,第一个是:

<select id='car1' name='car1' onchange='car_remove();'> 
    <option value="volvo">Volvo</option> 
    <option value="saab">Saab</option> 
    <option value="mercedes">Mercedes</option> 
    <option value="audi">Audi</option> 
</select> 

,第二个是:

<select id='car2' name='car2'> 
    <option value="volvo">Volvo</option> 
    <option value="saab">Saab</option> 
    <option value="mercedes">Mercedes</option> 
    <option value="audi">Audi</option> 
</select> 

</form> 

包括这个小JavaScript函数(jquery.js包含标题中的脚本):

function car_remove() 
{ 
    car1_selected = document.test.car1.value; 
    $("#car2 option[value="+ car1_selected +"]").remove(); 
} 
+3

你的代码是什么? JSFiddle在哪里?你能发布一个链接到页面吗? – Sparky 2011-06-14 03:58:51

+0

http://fiddle.jshell.net/r8zpT/1/ – lovepong 2011-06-14 04:30:59

+0

@lovepong:您不再需要内嵌JavaScript了......您现在正在使用jQuery!删除这个:'onchange ='并将其添加到您的jQuery函数中:'$('#car1')。change(function(){// stuff_to_do //});' – Sparky 2011-06-14 04:41:32

回答

0

我没有IE8测试,但一对夫妇的事情可能是你的问题:

1)jQuery的价值选择应该是在引号。更改

$("#car2 option[value="+ car1_selected +"]").remove();

$("#car2 option[value='"+ car1_selected +"']").remove();

注意在这个例子中,除了单引号(你也可以使用转义双引号)。在使用完整的JavaScript的选择(或jQuery的等价物)的习惯

2)获取:

car1_selected = document.test.car1.value;

应该

car1_selected = document.getElementById("car1").value; 

事实上,这可能是你的问题, '测试'实际上不是一个id,而是一个名字。

0
function car_remove() 
{ 
    // car1_selected = document.test.car1.value; *Don't use this its a plain javascript* 
    // use this. Always try to use jQuery API's instead of conventional JS 
    car1_selected = $('#car1 option[selected]').val(); 
    $("#car1 option[value="+ car1_selected +"]").remove(); 
}