在这一行上,我试图选择包含其中一个单词的<tr>
,但不包含图像,但它不起作用,基本上当我在页面上使用它时,页面是空白。
$('#SubscribersManageList tr:contains("CIUDAD EVITA"), tr:contains("MORENO"), tr:contains("CORRIENTES"), tr:contains("LA MATANZA"), tr:contains("QUILMES"), tr:contains("LOMAS DE ZAMORA"), tr:contains("LANUS"), tr:contains("AVELLANEDA"), tr:contains("CORDOBA"), tr:contains("CAPITAL FEDERAL"), tr:contains("RAMOS MEJIA"):not(:has(img[src*="images/plus.gif"]))').css("background-color", "red").insertAfter("tr.Heading3:last");
如果该行包含以下任何一个词,如何以简单的方式执行此操作?
您可以在此处测试:http://jsfiddle.net/cwar3/1/
答案 0 :(得分:2)
您必须单独使用每个逗号片段#SubscribersManageList
,或者您可以像我在下面所做的那样做,并将其作为上下文传递一次。我可能会这样写它(为了便于阅读而分解成多行 - 你必须把它放回一行才能使用它):
$('tr:contains("CIUDAD EVITA"),
tr:contains("MORENO"),
tr:contains("CORRIENTES"),
tr:contains("LA MATANZA"),
tr:contains("QUILMES"),
tr:contains("LOMAS DE ZAMORA"),
tr:contains("LANUS"),
tr:contains("AVELLANEDA"),
tr:contains("CORDOBA"),
tr:contains("CAPITAL FEDERAL"),
tr:contains("RAMOS MEJIA")', $("#SubscribersManageList"))
.not('img[src*="images/plus.gif"]')
.css("background-color", "red")
.insertAfter("tr.Heading3:last");
根据您的意见,如果您想按特定顺序将它们重新插入DOM,我建议您:
var containValues = [
"CIUDAD EVITA",
"MORENO",
"CORRIENTES",
"LA MATANZA",
"QUILMES",
"LOMAS DE ZAMORA",
"LANUS",
"AVELLANEDA",
"CORDOBA",
"CAPITAL FEDERAL",
"RAMOS MEJIA"
];
var context = $("#SubscribersManageList");
var target = context.find("tr.Heading3:last");
for (var i = containValues.length - 1; i >= 0; i--) {
context.find('tr:contains("' + containValues[i] + '")')
.not('img[src*="images/plus.gif"]')
.css("background-color", "red")
.insertAfter(target);
}
你可以在这里看到它:http://jsfiddle.net/jfriend00/MzgbV/。
这将一次遍历数组,查找,样式化然后插入每个数组,并按数组顺序处理它们。它实际上向后穿过数组,因此插入的最后一个数据首先结束。
答案 1 :(得分:1)
此过滤器变得如此复杂,您可能需要考虑使用jQuery.fn.filter
函数:
$('#SubscribersManageList tr').filter(function(){
if($(this).has('img[src*="images/plus.gif"]')){
return false;
}
return ($(this).text().search(/(CIUDAD EVITA|MORENO|CORRIENTES|etc)/) > -1);
})
.css("background-color", "red")
.insertAfter("tr.Heading3:last");
答案 2 :(得分:0)
您可以在:contains
调用中使用正则表达式,而不是使用.filter()
:
$(selector).filter(function()
{
return /some regex/.test( $(this).text() );
});
所以它看起来像:
$('#SubscribersManageList tr').filter(function()
{
return /CIUDAD EVITA|MORENO/.test( $(this).text() );
});