[英]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.