3

私は次のようなjqueryセレクターを持っています:

$("#MasterListDVWP tr td:contains('" + currentSchool + "')").siblings("td:contains('Yes')").siblings("td:contains('CD'),td:contains('Other1')").each(function() {
// do something
});

セレクターを変換して、含まれているだけでなく正確なテキストに一致するオブジェクトを返すように誰かが助けてくれますか?私はこれが有効ではないことを知っていますが、このようなものです..siblings( "td:equals('CD')").. ..

あなたの助けは大歓迎です。

4

4 に答える 4

11

あなたの最善の策は、おそらく .filter() 関数です。チェックしている要素のテキストをテストする関数を渡します

$('#MasterListDVWP tr td').filter(function(){
  return $(this).text() === currentSchool;
}).siblings('td').filter(function(){
  return $(this).text() === 'CD' || $(this).text() === 'Other1';
}).each(function(){
  // do something
});
于 2012-06-23T00:11:04.790 に答える
8

そのような jQuery セレクターはありませんが、作成できます。

jQuery.extend(jQuery.expr[':'], {
    containsExactly: function (obj, index, meta, stack) {
        if ($(obj).text() === meta[3]) {
            return true;
        }
        return false;
    }
});

これを行うと、次のことができるようになります。

$("#MasterListDVWP tr td:td:containsExactly('" + currentSchool + "')").siblings("td:containsExactly('Yes')").siblings("td:td:containsExactly('CD'),td:td:containsExactly('Other1')").each(function() {
// do something
});

やってみて!

于 2012-06-23T00:13:23.023 に答える
5

裸のセレクターでは不可能です。

多分あなたは次.filter()のように使うことができます:

 $(...selectors...).filter(
     function (index) { return $(this).text() == "textToMatch"; }
);

同じ要素に対する複数のフィルタリングの場合:

 $(...selectors...).filter(
     function (index) { 
          return $(this).text() == "textToMatch" && $(this).text()=="anotherText"; 
     }
);

.filter()または、さまざまな宣言を連鎖させるだけです。

|| を使用 (または) && の代わりにテキストまたは別の TD を検索します。

于 2012-06-23T00:07:18.637 に答える