सवाल JQuery ऑब्जेक्ट से आइटम निकालें


jQuery डीओएम से नोड्स को निकालना आसान बनाता है। लेकिन आप jQuery ऑब्जेक्ट से कुछ कैसे हटाते हैं?


47
2017-09-10 12:56


मूल


आप किस तरह की चीज को हटाने की कोशिश कर रहे हैं? - acrosman
@acrosman - विशेष रूप से कुछ भी नहीं। मैं सिर्फ यह जानना चाहता हूं कि jQuery कैसे जादू करता है। एपीआई के बारे में jQuery साइट पर अच्छा प्रलेखन है, लेकिन (स्रोत के माध्यम से जाने के अलावा) मुझे jQuery ऑब्जेक्ट की आंतरिक कार्यप्रणालियों के बारे में अधिक दस्तावेज नहीं दिखाई देता। - Will Peavy


जवाब:


यदि आप jQuery ऑब्जेक्ट से नोड्स को हटाने के बारे में बात कर रहे हैं, तो इसका उपयोग करें filter या not कार्य करता है। अधिक के लिए यहां देखें

कैसे इस्तेमाल करे filter:

var ps = $('p');

//Removes all elements from the set of matched elements that do 
//not match the specified function.
ps = ps.filter(function() {
  //return true to keep it, false to discard it
  //the logic is up to you.
});

या

var ps = $('p');

//Removes all elements from the set of matched elements that 
//do not match the specified expression(s).
ps = ps.filter('.selector');

कैसे इस्तेमाल करे not:

var ps = $('p');

//Removes elements matching the specified expression 
//from the set of matched elements.
ps = ps.not('.selector'); 

52
2017-09-10 12:57



@ geowa4 - उत्तर के लिए धन्यवाद। क्या आपको पता है कि फ़िल्टर दुनिया भर में ऑब्जेक्ट से नोड को हटा देता है, या सिर्फ अपने फ़ंक्शन के लिए स्थानीय? - Will Peavy
एक चीज जिसने मुझे फिसल दिया है, यह वास्तव में एक कैश किए गए चयनकर्ता से कुछ भी नहीं हटाएगा जबतक कि आप पुन: असाइन नहीं करते। तो आपको ps = ps.filter (function () {// stuff}) की आवश्यकता है; - SimplGy


जैसा कि पहले से ही उल्लेख किया गया है, $.filter() डेटा फ़िल्टर करने के लिए एक शानदार विकल्प है। यह भी ध्यान दें jQuery ऑब्जेक्ट को सरणी की तरह संभाला जा सकता है, और इस तरह, आप सरणी विधियों का उपयोग कर सकते हैं splice() इस पर।

var people = $(".people");
people.splice(2,1); // Remove 1 item starting from index 2

8
2017-09-10 13:05



@ geowa4: पढ़ें learningjquery.com/2008/12/peeling-away-the-jquery-wrapper - Sampson
@ जोनाथन: क्या आपने इसे पढ़ा? बीसी यह नहीं कहता कि यह एक सरणी है। आप एक, सुनिश्चित कर सकते हैं, और jQuery कुछ तरीकों से एक सरणी की तरह व्यवहार कर सकते हैं। लेकिन यह अभी भी एक सरणी नहीं है - एक महत्वपूर्ण भेद। वास्तव में, कुछ एरे फ़ंक्शन jQuery ऑब्जेक्ट पर काम करते हैं, जैसा कि मेरी पहली टिप्पणी में उल्लेख किया गया है। - geowa4
@ geowa4: हाँ, मैंने इसे पढ़ा। मुझे पता है कि यह एक सरणी नहीं है (तकनीकी रूप से), इसलिए मैं अपने खराब शब्दों के लिए क्षमा चाहता हूं। मेरा संवाद करने का मतलब यह था कि आप इसे एक सरणी की तरह व्यवहार कर सकते हैं - जैसा कि मेरा उदाहरण इंगित करता है। - Sampson
@ जोनाथन: सौदा। आम तौर पर मैं शब्द के बारे में पसंद नहीं करता हूं, लेकिन यह एक आम गलती है कि मैं बहुत से लोगों को देखता हूं जो उन्हें अपने सिर खरोंचने में काफी समय बिताते हैं। - geowa4
JQuery v1.8.3 .pop () और .shift () में jQuery ऑब्जेक्ट्स के लिए उपलब्ध नहीं हैं। - Robin


<ul>
    <li class="1" />
    <li class="2" />
    <li class="3" />
    <li class="4" />
    <li class="5" />
</ul>

JQuery ऑब्जेक्ट संग्रह पर फ़िल्टर पुनरावृत्त करता है। प्रत्येक तत्व के लिए: वापसी true के भीतर filter() वर्तमान वस्तु को jQuery ऑब्जेक्ट संग्रह में रखने के लिए। वापसी false jQuery ऑब्जेक्ट संग्रह से वर्तमान ऑब्जेक्ट को निकालने के लिए।

$("li").filter(function ()
{
    if (this.className == "1" || this.className == "2") return true;

    return false;
});

इस मामले में; द्वारा निष्पादित अज्ञात समारोह filter() सूची-वस्तु के लिए सच होगा जो कक्षा है 1 और / या 2, बदले में jQuery ऑब्जेक्ट संग्रह से पिछले तीन सूची-आइटम को हटा रहा है।


एक व्यावहारिक उदाहरण:

<ul>
    <li class="1" />
    <li class="2" />
    <li class="3" />
    <li class="4" />
    <li class="5" />
</ul>

यह स्निपेट एक वर्ग ("नीला") को अनियंत्रित सूची में जोड़ता है। फिर पहले दो सूची-वस्तुओं को हाइलाइट करता है। फिर क्लिक-हैंडलर को पहले दो सूची-आइटमों से जोड़ता है:

$(function ()
{
    $("ul").addClass("blue").find("li").filter(function ()
    {        
        if (this.className == "1" || this.className == "2") return true;

        return false;

    }).addClass("highlight").click(function ()
    {
        alert("I am highlighted!");
    });
});

2
2017-09-10 13:01



fyi, कि हर बार झूठी वापसी होगी। तुम लूप कर रहे हो ulएस, नहीं liएस के पास नामनाम हैं। - geowa4
मस्तिष्क-फार्ट :) हेड-अप के लिए धन्यवाद। - roosteronacid