簡體   English   中英

如何查找jQuery選擇器(使用:contains)結果集的補碼

[英]How to find a jQuery selector (using :contains) result set's complement

補充jQuery選擇器結果集的最佳方法是什么? 我想做以下事情:

jQuery(this).find("div:contains('someValue')").show();

但是我希望隱藏這種選擇的補充:

jQuery(this).find("div:not(:contains('someValue'))").hide();

除了執行互補選擇器之外,還有更好的解決方案嗎? 我可以看到的另一種方法是先查找所有div,存儲結果,然后過濾:

var results = jQuery(this).find("div");
results.find(":contains('someValue')").show();
results.find(":not(:contains('someValue'))").hide();

但這似乎沒有更好。 有任何想法嗎?

var results = jQuery(this).find("div"),
    selector = ":contains('someValue')";

results.filter(selector).show();
results.not(selector).hide();

正如@Simon評論中提到的,有一種方法可以改善此特定解決方案:

var results = jQuery("div", this),
    selector = ":contains('someValue')";

results.filter(selector).show();
results.not(selector).hide();

好吧,我認為您的代碼相當不錯,但是另一個選擇可能是運行以下語句:

jQuery(this).find("div").each(
    function() {
        var me = $(this);
        var f = me.is(":contains('someValue')") ? "show" : "hide";
        me[f]();
    }
);

這樣嘗試

jQuery(this).find("div").hide();
jQuery(this).find("div:contains('someValue')").show();
/** $.grepl 
*   uses a regular expression for text matching within an internal $.grep.
*/

$.extend({ 
 "grepl": function(el, exp){ 
  exp=new RegExp(exp,'gi'); // create RegExp
  return $( 
   this.grep( el, function(n,i){ // run internal grep
    return el[i].textContent.match(exp) != null; // match RegExp against textContent
   })
  );
 }
});

$.grepl( $('div'), '^.*someRegexp.*$' ).css('display','none'); // usage of the function

我知道這並不完全使用“:contains”表達式,但是結果應該相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM