我一直在使用以下代码在下拉选项中添加一些额外的文字:
jQuery("[id='product option1'] > option:contains('Notebook')").text('Notebook - OUT OF STOCK');
我必须通过它的文本获得选项,因为我的产品的1000个使用相同的下拉列表,它们各自都有自己不同的值。只是文本对所有人来说都是一样的。
这可行,但在我的下拉列表中也是Notebook Large
,因此使用上面的内容会将- OUT OF STOCK
添加到任何带有Notebook的选项。
我知道这是因为我在寻找contains
。我可以使用什么来查找仅包含确切文本的选项?
注意:我知道这不是最佳做法,但我无法将id更改为没有空格,因此需要[id='product option1']
作为选择器。
答案 0 :(得分:0)
试试这个:
jQuery("[id='product option1']")
.children()
.filter(function(i,v){return v.innerText.indexOf('Notebook')>-1;})
.text('Notebook - OUT OF STOCK');
答案 1 :(得分:0)
我通常使用filter,它将一个函数作为参数,如果为true则将其添加到堆栈中,否则会跳过它,因此在这种情况下它应该类似于:
jQuery("*[id='product option1']")
.find('option')
.filter(function (){
return $.trim($(this).text())=='Notebook';
})
.text('Notebook - OUT OF STOCK');
答案 2 :(得分:0)
没有一个答案对我有用,因为它们仍然给了我包含该文本的所有选项。 @Jamie Barker给我的链接:
jquery : How to select an option by its text?
给我正确的结果(感谢C. Hilarius博士)
代码是:
jQuery("[id='product option1'] > option:contains('Notebook')").each(function(){
if (jQuery(this).text() == 'Notebook') {
jQuery(this).text('Notebook - OUT OF STOCK');
return;
}
});