2012-01-28 6 views
2

이 줄에서이 단어 중 하나를 포함하지만 이미지가 포함되어 있지 않지만 기본적으로 페이지에서 사용할 때 작동하지 않는 <tr>을 선택하려고합니다. 페이지가 비어 있습니다.JQuery : 다음 단어 중 하나를 포함합니다

$('#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/

답변

2

:

$(selector).filter(function() 
{ 
    return /some regex/.test($(this).text()); 
}); 

그래서 그것의 모습 당신은 각각의 쉼표를 따로 가지고있는 #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에, 나는이 좋을 것 : http://jsfiddle.net/jfriend00/MzgbV/을 :

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); 
} 

당신이 여기서 일 볼 수 있습니다.

이것은 한 번에 하나씩 배열을 찾아서 스타일을 지정하고 각각을 삽입 한 다음 배열 순서로 처리합니다. 실제로 배열을 거꾸로 지나치므로 삽입 된 마지막 것이 먼저 끝납니다.

+0

, 필자는 그냥 테스트, u는 그래서 u는 경우에 볼 수 있습니다 여기에 다른 버전을하려고 마음 수행이 나던 일 작동합니까? http://jsfiddle.net/cwar3/1/ – sebas

+0

@Sebas - http://jsfiddle.net/jfriend00/fKWKG/ 여기서는 저에게 효과가있는 것으로 보입니다. 항목을 빨간색으로 바꾸어 간단하게 처리 했으므로 항목이 빨간색으로 바뀌어 조작중인 항목을 더 쉽게 볼 수 있습니다. – jfriend00

+0

괜찮아요 jquery 1.71 있지만 jquer 메신저 1.32 왜 사용하는지 보려면 어떻게해야합니까? – sebas

0

을 대신 :contains을 useing, 당신은 .filter() 호출에 정규 표현식을 사용할 수 있습니다

$('#SubscribersManageList tr').filter(function() 
{ 
    return /CIUDAD EVITA|MORENO/.test($(this).text()); 
}); 
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");