按文本查找选择选项

时间:2012-08-14 10:32:03

标签: javascript jquery mootools

任何人都可以告诉我为什么它适用于旧版本的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();
    });

});

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

当我将版本更改为1.8.0并运行该页面时,this error出现在我的Opera脚本控制台中:

http://s15.postimage.org/5yhodvirt/ess.png

这似乎出现在" mootools" file..but我没有选择mootools,我选择了jQuery 1.8.0

:/

感谢。

3 个答案:

答案 0 :(得分:15)

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

  

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

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

FIDDLE

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

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

FIDDLE

答案 1 :(得分:2)

你可能会有更多运气:

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

另请参阅::contains() selector

答案 2 :(得分:0)

试试这个

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

});