通过文本查找选择选项

问题描述:

任何人都可以告诉我为什么它可以在旧版本的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

:/

感谢。

+5

哈哈,你说'屁股'。 – RubeOnRails 2015-02-19 21:04:42

您正在使用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

+0

嗨,看到我对另一个谁建议包含的评论 – 2012-08-14 10:45:21

+0

嗯,只是试过,但似乎也没有工作。虽然没有得到任何控制台错误。编辑:现在得到它的工作,不得不改变“输入”到“选项”谢谢。 – 2012-08-14 10:54:44

+0

@ user1597762是的,欢迎您。 – undefined 2012-08-14 10:57:20

你将可能有更多的运气与此:

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

参见::contains() selector

+0

嗨,包含对此没有任何好处,因为它必须完全匹配。包含('unit2')例如也会匹配'unit200',并且会有很多选择菜单和选项。 – 2012-08-14 10:44:49

试试这个

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

});