4

jquery を使用して一部の HTML の要素を検索しようとしています。ラベル テキスト「This is my test label」および「Yest another test label」を含むリスト ID を検索して非表示にしたいと考えています。

<ul id="mylist" class="top_level_list">
<li id="field66" class="myfield">
    <div class="field_icons">
        <div class="title">This is my title</div>
    </div>
    <label class="my_label" for="input71">This is my test label</label>
</li>
<li id="field20" class="myfield">
    <div class="field_icons">
        <div class="title">This another test title</div>
    </div>
    <label class="my_label" for="input71">Yet another test label</label>
</li>

jQuery .hide 関数と .find() 関数を見つけましたが、その中のコンテンツを使用して要素を選択する方法がわかりません。

誰でも助けることができますか?

4

6 に答える 6

5

これは少し簡単な解決策です。$(".my_label:contains('This is my test label')").hide();. ここで実際の動作を確認できます: http://jsfiddle.net/kPxTw/

于 2013-06-06T15:33:09.653 に答える
2

ここを見てください:http://jsfiddle.net/yPFgu/1/

コード

var labelsToHide = ["This is my test label", "Another one"];

$("li").each(function () {
    var txt = $(this).find("label").text();
    if (labelsToHide.indexOf(txt) > -1 )
        $(this).hide();
});

それが役に立てば幸い。

于 2013-06-06T15:32:37.050 に答える
2

私の個人ファイルには、あなたが望むことをするプロトタイプがあります。私はあなたとそれを共有することができます。コードを呼び出す前に、ドキュメントのどこかにこれを追加するだけです:

$.fn.filterText = function(text, caseSensitive){
    var returnedObj = $(),
        caseSensitive = caseSensitive || false,
        $this = $(this);
    if(typeof text == 'object'){
        for(var i = 0; i < text.length; i++){
            if(typeof text[i] == 'string'){
                console.log(i);
                returnedObj = returnedObj.add($this.filter(function(){
                    var search = caseSensitive ? text[i] : new RegExp(text[i], 'i')
                    return $(this).text().search(search) != -1;
                }))

            }
        }
    }else if(typeof text == 'string'){
        returnedObj = returnedObj.add($this.filter(function(){
            var search = caseSensitive ? text : new RegExp(text, 'i')
            return $(this).text().search(search) != -1;
        }))
    }
    return returnedObj;
}

次に、その行で親を非表示にすることができます:

$('label').filterText(['This is my test label', 'Yet another test label'], true /*case sensitive?*/)
          .parent()
          .hide()

フィドル: http://jsfiddle.net/yKprx/

たぶん、$.fn //Author @Karl-André Gagnon:)の前にコメントを追加するだけです

于 2013-06-06T17:28:51.507 に答える
1

次のように選択できます。

$('.title').each(function() {
    if (($(this).text() == 'This is my test label') || ($(this).text() == 'Yet another test label')) {
      $(this).hide();
    }
});
于 2013-06-06T15:33:11.260 に答える