2012-11-20 13 views
5

क्या किसी निश्चित वर्ग के साथ सभी तत्वों का चयन करना संभव है, लेकिन यदि उनमें कुछ .text() शामिल नहीं है?उन सभी तत्वों को खोजें जिनमें कोई निश्चित स्ट्रिंग नहीं है

<div class="test">0</div> 
<div class="test">1</div> 
<div class="test">2</div> 
<div class="test">3</div> 
<div class="test">4</div> 

var divList = $(".test").toArray(); 
var divLength = divList.length; 

क्या मैं इस कोड के साथ क्या करना चाहते हैं उस में 0 के साथ <div> शामिल नहीं करने के लिए है -

यहाँ मैं अब तक है।

+0

तुम भी सीधे उपयोग कर सकते हैं '.length' एक jQuery वस्तु पर। – pimvdb

+0

क्या यह 10, 20, 100, आदि हो सकता है? – epascarello

+0

यदि आपको उन divs में से एक टेक्स्ट में कहीं भी '0' है तो आपको समस्याएं आ रही हैं। जहां तक ​​मुझे पता है, 'शामिल है' रेगेक्स नहीं ले सकता है। – jbabey

उत्तर

11
$('.test').not(':contains(0)') 

http://api.jquery.com/contains-selector/

संयोग से, epascarello के सवाल का जवाब देने, इस किसी भी सबस्ट्रिंग कहीं भी तत्व के अंदर से मेल खाएगी। यदि आपकी संख्या 10 तक बढ़ जाती है, तो वह उस मैच से मेल खाएगा और उसे भी छूट देगा। यदि आपके लिए यह कोई समस्या है तो आपको कस्टम चयनकर्ता या .filter() फ़ंक्शन की आवश्यकता होगी।

+0

+1, सिंगल-सिलेक्टर सिंटैक्स (क्रोम एटलास्ट पर) से बहुत तेज़ है http://jsperf.com/psuedo-vs-chained-jb – jbabey

+0

@jbabey मुझे आश्चर्य नहीं है - चयनकर्ता को पार्सिंग का मतलब अतिरिक्त काम है एक ही परिणाम प्राप्त करने के लिए jQuery इंजन। बेशक, असली दुनिया में, कोई समझदार अंतर होने की संभावना नहीं है। एक सही उत्तर के लिए – Blazemonger

0

आप इस कोशिश कर सकते हैं: -

$(".test:not(:contains('0'))") 
+0

+1 और यादृच्छिक टिप्पणी रहित डाउनवॉटर का विरोध करने के लिए। – jbabey

+0

@jbabey: - Thanx बहुत कुछ।मैंने previosuly सवाल शायद गलत समझा कि शायद मैं downvote क्यों मिला :( –

3

एक त्वरित गूगल सतह http://forum.jquery.com/topic/jquery-opposite-of-contains

को यह लाया यह इस

$(".test:not(:contains('0'))") 

संपादित

एक करने के लिए नीचे आता है @jbabey द्वारा परीक्षण वें दिखाता है पर स्वीकार किए जाते हैं जवाब तेजी से होता है, तो यह है कि

$(".test").not(":contains(0)"); 

का उपयोग epascarello के जवाब पर एक अनुसरण के रूप में, निम्नलिखित चयनकर्ता एक सटीक मिलान (इस jQuery में डिफ़ॉल्ट रूप से शामिल नहीं है!)

$.expr[":"].econtains = function(obj, index, meta, stack){ 
    return (obj.textContent || obj.innerText || $(obj).text() || "").toLowerCase() == meta[3].toLowerCase(); 
} 

करना होगा एक सटीक मिलान करने के लिए, आप अब उपयोग कर सकते हैं

$(".test").not(":econtains(0)");​ 
0

यहाँ एक विधि है कि :contains चयनकर्ता का उपयोग नहीं करता है

आप .filter() समारोह

$('.test').filter(function(){ 
    return $(this).text().indexOf('0') < 0 ; 
}); 

Check Fiddle

0

उपयोग कर सकते हैं यह भी इच्छित पाठ प्राप्त करने के लिए जिस तरह से में से एक है: http://jsbin.com/arifuv/1/edit

var aa = $('.test').filter(':not(:contains(0))').text(); 

console.log(aa); 

// results are ---> 1234 
संबंधित मुद्दे

 संबंधित मुद्दे