我有以下代码非常臃肿
$(".field-name-field-parts-status .field-item:contains('Submitted'), .field-name-field-parts-status .field-item:contains('Saved'), .field-name-field-parts-status .field-item:contains('HMNZ Approved')").addClass('btn-primary');
我试图通过添加var
var fieldItemStatus = $(".field-name-field-parts-status .field-item");
所以它看起来像这样
$(fieldItemStatus + ":contains('Submitted'), " + fieldItemStatus + ":contains('Saved'), " + fieldItemStatus + ":contains('HMNZ Approved')").addClass('btn-primary');
但它停止了工作,谁能告诉我我做错了什么?感谢
答案 0 :(得分:2)
因为您正在尝试将jQuery对象和字符串一起添加。它不会那样工作。
var fieldItemStatus = $(".field-name-field-parts-status .field-item");
应该是一个字符串
var fieldItemStatus = ".field-name-field-parts-status .field-item";
其他选项是使用过滤器。
答案 1 :(得分:1)
您可以使用filter
方法:
fieldItemStatus.filter(":contains('Submitted'), :contains('Saved'), :contains('HMNZ Approved')").addClass('btn-primary');
另一种选择是使用filter
回调函数:
var items = ['Submitted', 'Saved', 'HMNZ Approved'];
fieldItemStatus.filter(function(_, el) {
return items.some(function(item) {
return el.textContent.indexOf(item) > -1;
});
});
答案 2 :(得分:1)
您需要使用.filter()
fieldItemStatus.filter(":contains('Submitted'), :contains('Saved'), :contains('HMNZ Approved')").addClass('btn-primary');
fieldItemStatus
是一个对象
fieldItemStatus + ":contains('Submitted'), " + fieldItemStatus + ":contains('Saved'), " + fieldItemStatus + ":contains('HMNZ Approved')
会创建一个类似[Object object]:contains('Submitted'), [Object object]:contains('Saved'), [Object object]:contains('HMNZ Approved')
答案 3 :(得分:1)
为fieldItemStatus
删除前面的$ var fieldItemStatus = ".field-name-field-parts-status .field-item";
答案 4 :(得分:1)
因为你想使用jQuery Object来连接字符串。正确的方法是始终使用字符串。
var fieldItemStatus = ".field-name-field-parts-status .field-item";
$(fieldItemStatus + ":contains('Submitted'), " + fieldItemStatus + ":contains('Saved'), " + fieldItemStatus + ":contains('HMNZ Approved')").addClass('btn-primary');
答案 5 :(得分:0)
更具程序性的方法。这样,如果您想轻松更改选择器,只需更改contains数组即可。您可以将其转换为一个函数,以便在脚本的其他位置轻松检索您的选择器。
var contains = ['Submitted','Saved','HMNZ Approved'];
var selector = '';
for(var i = 0; i < contains.length; i++) {
selector += '.field-name-field-parts-status .field-item:contains("' + contains[i] + ')';
if(i < contains.length - 1) selector += ', ';
}
$(selector).addClass('btn-primary');