10

谁能告诉我为什么这在旧版本的jQuery(例如1.4.2)中有效,但是如果您切换到更高版本,例如(1.6 +)它会停止工作?

http://jsfiddle.net/nmvf6/1194/

$(function(){
    $('#my_button').click(function(){
        var unitName = "Unit2";
        $('.assUnit').find('option[text="'+unitName+'"]').remove();
    });

});

​</p>

我已经在控制台中检查了更高版本的错误输出,并且页面加载时似乎发生了错误,甚至在我加载我的脚本并能够单击按钮之前。

例如,当我将版本更改为 1.8.0 并运行页面时,我的 Opera 脚本控制台中会出现此错误:

这似乎在“mootools”文件中..但我没有选择 mootools,我选择了 jQuery 1.8.0

:/

谢谢。

4

3 回答 3

15

您正在使用Attribute Equals选择器,它选择具有指定属性且值完全等于某个值的元素,选项元素没有text属性,您可以改用:contains选择器,试试这个:

选择包含指定文本的所有元素。

$(function(){
    $('#my_button').click(function(){
        var unitName = "Unit2";
        $('.assUnit').find('option:contains('+unitName+')').remove();
    });
});

小提琴

如果要选择仅具有特定值的元素,可以使用以下filter方法:

$(function(){
    $('#my_button').click(function(){
        var unitName = "Unit2";
        $('.assUnit option').filter(function() {
             return $(this).text() === unitName
        }).remove();
    });
});

小提琴

于 2012-08-14T10:35:36.287 回答
2

你可能会有更多的运气:

$('.assUnit').find('option:contains('+unitName+')').remove();

参见::contains() 选择器

于 2012-08-14T10:34:58.970 回答
1

试试这个

$(function(){
    $('#my_button').click(function(){
       var unitName = "Unit2";
       $(".assUnit option:contains('"+unitName+"')").remove();
   });

});
于 2012-08-14T11:11:03.013 回答