2

<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/

4

3 に答える 3

2

#SubscribersManageListすべてのコンマピースを個別に持つ必要があります。または、以下で行ったように、コンテキストとして1回だけ渡すことができます。私はおそらくそれをこのように書くでしょう(ここでは読みやすさのためだけに複数の行に分割されています-それを使用するには1行に戻す必要があります):

$('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つずつ処理され、それぞれが検索、スタイリング、挿入され、配列順に処理されます。実際には配列を逆方向に通過するため、最後に挿入された配列が最初に終了します。

于 2012-01-28T22:59:47.310 に答える
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");
于 2012-01-28T23:03:01.600 に答える
0

を使用する代わりに、呼び出し:containsで正規表現を使用できます。.filter()

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

したがって、次のようになります。

$('#SubscribersManageList tr').filter(function() 
{
    return /CIUDAD EVITA|MORENO/.test( $(this).text() );
});
于 2012-01-28T22:59:16.403 に答える