बाल पाठ टैग में नेस्टेड नहीं केवल पाठ को पुनः प्राप्त करने के लिए .text () का उपयोग करना


386

अगर मेरे पास html इस तरह है:

<li id="listItem">
    This is some text
    <span id="firstSpan">First span text</span>
    <span id="secondSpan">Second span text</span>
</li>

मैं .text()सिर्फ "यह कुछ पाठ है" स्ट्रिंग को पुनः प्राप्त करने के लिए उपयोग करने की कोशिश कर रहा हूं , लेकिन अगर मैं कहूं $('#list-item').text(), तो मुझे "यह कुछ टेक्स्टफर्स्ट स्पैन टेक्स्टसेकंड स्पैन टेक्स्ट है"।

क्या .text("")एक टैग के भीतर सिर्फ मुफ्त पाठ पाने के लिए (और संभवत: कुछ के माध्यम से ) हटाने का एक तरीका है , न कि उसके बच्चे के टैग के भीतर का पाठ?

HTML मेरे द्वारा नहीं लिखा गया था, इसलिए मुझे यही काम करना है। मुझे पता है कि html लिखते समय केवल टेक्स्ट को टैग में लपेटना सरल होगा, लेकिन फिर से, html पूर्व-लिखित है।


क्योंकि मेरे पास टिप्पणी करने के लिए अभी तक पर्याप्त प्रतिष्ठा नहीं है और मैं नहीं चाहता कि ज्ञान खो जाए (उम्मीद है कि यह किसी और की मदद करता है), macio.Jun का उत्तर , एक RegExp और iStranger का एक संयोजन HTML के साथ एक टेक्स्ट कोड को बदलने के लिए उत्तर देता है जावास्क्रिप्ट में? मुझे एक स्ट्रिंग के लिए केवल पाठ नोड्स की खोज करने और लिंक के साथ सभी घटनाओं को बदलने की अनुमति दी।
JDQ

जवाबों:


509

मूल clone()विधि के अंदर केवल पाठ प्राप्त करने के लिए यहां पाई गई विधि के आधार पर मुझे यह पुन: प्रयोज्य कार्यान्वयन पसंद आया ।

आसान संदर्भ के लिए प्रदान किया गया कोड:

$("#foo")
    .clone()    //clone the element
    .children() //select all the children
    .remove()   //remove all the children
    .end()  //again go back to selected element
    .text();

5
इस समाधान के साथ आप केवल बच्चे के बिना पाठ प्राप्त करते हैं, लेकिन आप केवल पाठ को प्रतिस्थापित नहीं कर सकते।
बेनोरे

1
मुझे 1 चीज़ नहीं मिलती है: यदि .end () पाठ से चयनित तत्व पर वापस जाता है, तो पाठ () में बच्चों के तत्वों के साथ मूल पाठ की प्रतिलिपि होनी चाहिए। लेकिन व्यवहार में मुझे लगता है कि हमारे हेरफेर किए गए क्लोन से पाठ की नकल की जा रही है। तो अंत () क्लोन () पर वापस जाता है?

68
यह ऐसा करने का एक बहुत ही अयोग्य तरीका है
बिलियनकोन

5
@ बिलियनकोन, क्या आप अधिक कुशल विधि सुझा सकते हैं? यह आकर्षक है क्योंकि यह "साफ" और "छोटा" है। आपकी क्या सलाह है?
derekmx271


364

सरल उत्तर:

$("#listItem").contents().filter(function(){ 
  return this.nodeType == 3; 
})[0].nodeValue = "The text you want to replace with" 

38
मुझे समझ में नहीं आता है कि कुशल जवाब (जो बाहरी डेटा संरचनाओं को उत्पन्न नहीं करते हैं) को उतना कम वोट नहीं दिया जाता है जितना कि कम डरावना लगता है। +5 अगर मैं कर सका।
स्टीवन लू

16
सरल और कुशल उत्तर
पॉल कैरोल

9
यह न केवल अधिक कुशल है बल्कि सही भी है! यह समाधान उन स्थितियों के लिए पूरा करता है जब पाठ बाल तत्वों के बीच बिखरे हुए होते हैं। +5
किरील टेनिन बॉम

15
और भी स्पष्ट होने के लिए, यदि आप IE8 + का उपयोग करते हैं, तो आप this.nodeType == Node.TEXT_NODEइसके स्थान पर उपयोग कर सकते हैं this.nodeType == 3। IMO पढ़ने और समझने में आसान।
NorTicUs

8
यदि आप इसे बिना किसी पाठ के साथ उपयोग करते हैं तो यह टूट जाएगा। यदि आप इसे एक फ़ंक्शन के रूप में उपयोग कर रहे हैं और एक परिदृश्य है जहां आपके पास पाठ हो सकता है या नहीं हो सकता है, तो बस .contents().filter(...)कॉल को एक स्थानीय चर में कैप्चर करें और इसकी लंबाई की जांच करें, जैसे, var text = $(this).contents().filter(...); if (text.length) { return text[0].nodeValue; } return "";
कार्ल बुसेमा

157

यह मेरे लिए jquery को अधिकता देने के एक मामले की तरह लगता है। निम्नलिखित पाठ को अन्य नोड्स की अनदेखी करते हुए पकड़ा जाएगा:

document.getElementById("listItem").childNodes[0];

आपको इसे ट्रिम करना होगा, लेकिन यह आपको वही मिलता है जो आप एक, आसान लाइन में चाहते हैं।

संपादित करें

ऊपर पाठ नोड मिलेगा । वास्तविक पाठ प्राप्त करने के लिए, इसका उपयोग करें:

document.getElementById("listItem").childNodes[0].nodeValue;

31
सर्वश्रेष्ठ उत्तर, आपको इसके लिए एक प्लगइन या 10 jQuery कॉल की एक श्रृंखला की आवश्यकता नहीं है। $('.foo')[0].childNodes[0].nodeValue.trim()
Raine

5
क्या होगा यदि पाठ सामग्री को कई नोड्स में विभाजित किया जाता है (जैसे कि क्रैस, टेक्स्ट, क्रॉले के अनुक्रम)? क्या कोई (रेल-जीवन) गारंटी देता है कि यूए द्वारा निर्मित डोम सरलतम संरचना का उपयोग करेगा?
कॉलप्पर

5
पूरी तरह से सबसे अच्छा जवाब ... क्यों अन्य लोग कभी-कभी jQuery का उपयोग करते हैं?
ncubica

11
यह केवल <div id = "listItem"> पाठ में काम करता है, जिसे आप चाहते हैं <span> अन्य </ span> </ div>। यह <div id = "listItem"> <span> अन्य </ span> टेक्स्ट के लिए काम नहीं करेगा जो आप चाहते हैं </ div>
स्पेंसर

1
कभी-कभी आपके पास नहीं होता है document। का उपयोग कर यहाँ आया था cheerio
फ्लैश

67

आसान और तेज:

$("#listItem").contents().get(0).nodeValue

क्या यह क्रॉस ब्राउज़र संगत है?
रजत गुप्ता

बेशक यह सूचकांक द्वारा दिए गए jQuery ऑब्जेक्ट द्वारा मिलान किए गए तत्वों में से एक को पुनः प्राप्त करता है: Jquery डॉक्स .get ()
वेकअप मॉर्निंग

1
अगर आपको इसे macio.Jun के उत्तर का उपयोग करने की आवश्यकता हो तो आप इसे एक <br/> टैग पर उपयोग करें ।
वेकअप मॉर्निंग

यह स्वीकृत उत्तर होना चाहिए।
डैनी

2
get(0)सिर्फ के बजाय क्यों [0]?
क्लोंडेक्स

28

स्वीकृत उत्तर के समान, लेकिन क्लोनिंग के बिना:

$("#foo").contents().not($("#foo").children()).text();

और यहाँ इस उद्देश्य के लिए एक jQuery प्लगइन है:

$.fn.immediateText = function() {
    return this.contents().not(this.children()).text();
};

इस प्लगइन का उपयोग करने का तरीका इस प्रकार है:

$("#foo").immediateText(); // get the text without children

T.children () में t क्या है?
FrEaKmAn

यह एक डुप्लिकेट समाधान है जिसे pbjk ने Jan'15 में लिखा है ... फिर भी - यह अच्छा लग रहा है।
Oskar Holmkratz

1
सच में नहीं, @ ऑस्कर। यहाँ .contents()हिस्सा महत्वपूर्ण है!
ड्यूजुन

बुरा समाधान अगर आपके नोड्स आईडी का उपयोग नहीं करते हैं।
AndroidDev

3
@AndroidDev आपके लिए जो भी काम करता है, उसे आप हमेशा चयनकर्ता से बदल सकते हैं। यह सिर्फ तकनीक को दर्शाने के लिए है! मैंने यह दिखाने के लिए एक प्लगिन संस्करण भी जोड़ा कि यह बिना आईडी के भी काम करता है
ड्यूजुन

8

कोड नहीं है:

var text  =  $('#listItem').clone().children().remove().end().text();

सिर्फ jQuery के लिए jQuery बन रहा है? जब सरल संचालन में कई जंजीर कमांड और उस (अनावश्यक) प्रसंस्करण शामिल होते हैं, तो शायद यह एक jQuery एक्सटेंशन लिखने का समय है:

(function ($) {
    function elementText(el, separator) {
        var textContents = [];
        for(var chld = el.firstChild; chld; chld = chld.nextSibling) {
            if (chld.nodeType == 3) { 
                textContents.push(chld.nodeValue);
            }
        }
        return textContents.join(separator);
    }
    $.fn.textNotChild = function(elementSeparator, nodeSeparator) {
    if (arguments.length<2){nodeSeparator="";}
    if (arguments.length<1){elementSeparator="";}
        return $.map(this, function(el){
            return elementText(el,nodeSeparator);
        }).join(elementSeparator);
    }
} (jQuery));

बुलाना:

var text = $('#listItem').textNotChild();

तर्क अलग-अलग परिदृश्य के सामने आने पर होता है, जैसे कि

<li>some text<a>more text</a>again more</li>
<li>second text<a>more text</a>again more</li>

var text = $("li").textNotChild(".....","<break>");

पाठ का मूल्य होगा:

some text<break>again more.....second text<break>again more

1
अच्छा लगा। यह jQuery के अगले संस्करण के लिए एक पुल अनुरोध बनाने के बारे में कैसे?
जारेड टोमाज़वेस्की

8

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

$('#listItem').not($('#listItem').children()).text()

6

यह कुछ जरूरतों के अनुरूप होना चाहिए, जो आपके द्वारा प्रस्तुत संरचना पर निर्भर हैं। आपके द्वारा दिए गए उदाहरण के लिए, यह काम करता है:

$(document).ready(function(){
     var $tmp = $('#listItem').children().remove();
     $('#listItem').text('').append($tmp);
});

डेमो: http://jquery.nodnod.net/cases/2385/run

लेकिन यह काफी हद तक मार्कअप पर निर्भर करता है कि आप क्या पोस्ट करते हैं।


2
भविष्य के पाठक सावधान रहें: इस उत्तर में कोड वास्तविक तत्व में बच्चों को मारता है। cloneयदि इसका अभीष्ट प्रभाव नहीं है, तो यहां विधि का उपयोग करना चाहिए ।
महन

@ DotNetWala का उत्तर, नीचे, और इस एक के बजाय उपयोग किया जाना चाहिए। या कम से कम, के .detach()बजाय विधि का उपयोग करें .remove()
डॉन मैककरी


4
jQuery.fn.ownText = function () {
    return $(this).contents().filter(function () {
        return this.nodeType === Node.TEXT_NODE;
    }).text();
};

1
इस कोड स्निपेट के लिए धन्यवाद, जो कुछ तत्काल सहायता प्रदान कर सकता है। एक उचित व्याख्या यह दर्शाती है कि यह समस्या का एक अच्छा समाधान क्यों है, यह दिखाते हुए इसके शैक्षिक मूल्य में बहुत सुधार करेगा , और यह भविष्य के पाठकों के लिए समान रूप से उपयोगी होगा, लेकिन समान नहीं, प्रश्न। कृपया स्पष्टीकरण जोड़ने के लिए अपने उत्तर को संपादित करें, और इस बात का संकेत दें कि क्या सीमाएँ और मान्यताएँ लागू होती हैं।
टोबी स्पाइट

3

यह एक पुराना प्रश्न है लेकिन शीर्ष उत्तर बहुत ही अक्षम है। यहाँ एक बेहतर समाधान है:

$.fn.myText = function() {
    var str = '';

    this.contents().each(function() {
        if (this.nodeType == 3) {
            str += this.textContent || this.innerText || '';
        }
    });

    return str;
};

और बस यह करें:

$("#foo").myText();

3

मुझे लगता है कि यह भी एक अच्छा समाधान होगा - यदि आप सभी पाठ नोड्स की सामग्री प्राप्त करना चाहते हैं जो चयनित तत्व के प्रत्यक्ष बच्चे हैं।

$(selector).contents().filter(function(){ return this.nodeType == 3; }).text();

नोट: jQuery प्रलेखन सामग्री फ़ंक्शन को समझाने के लिए समान कोड का उपयोग करता है: https://api.jquery.com/contents/

PS ऐसा करने के लिए थोड़ा बदसूरत तरीका भी है, लेकिन यह अधिक गहराई से दिखाता है कि चीजें कैसे काम करती हैं, और पाठ नोड्स के बीच कस्टम विभाजक के लिए अनुमति देता है (शायद आप वहां एक लाइन तोड़ना चाहते हैं)

$(selector).contents().filter(function(){ return this.nodeType == 3; }).map(function() { return this.nodeValue; }).toArray().join("");

1

मैं बनाने के लिए प्रस्ताव बनाने का उपयोग करने के लिए tTreeWalker HTML तत्वों से जुड़े सभी पाठ तत्वों को खोजने के लिए (यह फ़ंक्शन jQuery का विस्तार करने के लिए इस्तेमाल किया जा सकता है):

function textNodesOnlyUnder(el) {
  var resultSet = [];
  var n = null;
  var treeWalker  = document.createTreeWalker(el, NodeFilter.SHOW_TEXT, function (node) {
    if (node.parentNode.id == el.id && node.textContent.trim().length != 0) {
      return NodeFilter.FILTER_ACCEPT;
    }
    return NodeFilter.FILTER_SKIP;
  }, false);
  while (n = treeWalker.nextNode()) {
    resultSet.push(n);
  }
  return resultSet;
}



window.onload = function() {
  var ele = document.getElementById('listItem');
  var textNodesOnly = textNodesOnlyUnder(ele);
  var resultingText = textNodesOnly.map(function(val, index, arr) {
    return 'Text element N. ' + index + ' --> ' + val.textContent.trim();
  }).join('\n');
  document.getElementById('txtArea').value = resultingText;
}
<li id="listItem">
    This is some text
    <span id="firstSpan">First span text</span>
    <span id="secondSpan">Second span text</span>
</li>
<textarea id="txtArea" style="width: 400px;height: 200px;"></textarea>


1

यदि indexपाठ नोड की स्थिति उसके भाई-बहनों के बीच तय की गई है, तो आप उपयोग कर सकते हैं

$('parentselector').contents().eq(index).text()

1

यह सुनिश्चित न करें कि इसे कवर करने के लिए आपको कितने लचीले या कितने मामलों की आवश्यकता है, लेकिन आपके उदाहरण के लिए, यदि पाठ हमेशा पहले HTML टैग से पहले आता है - तो पहले टैग पर केवल आंतरिक HTML को विभाजित क्यों न करें और पूर्व को लें:

$('#listItem').html().split('<span')[0]; 

और अगर आपको इसकी आवश्यकता है तो शायद व्यापक हो

$('#listItem').html().split('<')[0]; 

और अगर आपको दो मार्करों के बीच पाठ की आवश्यकता है, जैसे एक चीज़ के बाद, लेकिन दूसरे से पहले, आप कुछ ऐसा कर सकते हैं (अप्रकाशित) और उपयोग करें यदि कथन इसे पर्याप्त लचीला बनाने के लिए प्रारंभ या समाप्ति मार्कर या दोनों हों, जबकि अशक्त त्रुटियों से बचते हुए :

var startMarker = '';// put any starting marker here
var endMarker = '<';// put the end marker here
var myText = String( $('#listItem').html() );
// if the start marker is found, take the string after it
myText = myText.split(startMarker)[1];        
// if the end marker is found, take the string before it
myText = myText.split(endMarker)[0];
console.log(myText); // output text between the first occurrence of the markers, assuming both markers exist.  If they don't this will throw an error, so some if statements to check params is probably in order...

मैं आम तौर पर इस तरह की उपयोगी चीजों के लिए उपयोगिता कार्य करता हूं, उन्हें त्रुटि मुक्त बनाता हूं, और फिर उन पर एक बार ठोस भरोसा करता हूं, बजाय हमेशा इस प्रकार के स्ट्रिंग हेरफेर को फिर से लिखने और अशक्त संदर्भों को जोखिम में डालने आदि के कारण, आप फ़ंक्शन का फिर से उपयोग कर सकते हैं। कई परियोजनाओं में और कभी भी उस पर समय बर्बाद नहीं करना पड़ता है फिर से डिबगिंग क्यों एक स्ट्रिंग संदर्भ में एक अपरिभाषित संदर्भ त्रुटि है। अब तक का सबसे छोटा 1 लाइन कोड नहीं हो सकता है, लेकिन आपके पास उपयोगिता फ़ंक्शन होने के बाद, यह तब से एक लाइन है। नोट अधिकांश कोड केवल मापदंडों को संभाल रहे हैं या त्रुटियों से बचने के लिए नहीं है :)

उदाहरण के लिए:

/**
* Get the text between two string markers.
**/
function textBetween(__string,__startMark,__endMark){
    var hasText = typeof __string !== 'undefined' && __string.length > 0;
    if(!hasText) return __string;
    var myText = String( __string );
    var hasStartMarker = typeof __startMark !== 'undefined' && __startMark.length > 0 && __string.indexOf(__startMark)>=0;
    var hasEndMarker =  typeof __endMark !== 'undefined' && __endMark.length > 0 && __string.indexOf(__endMark) > 0;
    if( hasStartMarker )  myText = myText.split(__startMark)[1];
    if( hasEndMarker )    myText = myText.split(__endMark)[0];
    return myText;
}

// now with 1 line from now on, and no jquery needed really, but to use your example:
var textWithNoHTML = textBetween( $('#listItem').html(), '', '<'); // should return text before first child HTML tag if the text is on page (use document ready etc)

यदि आपको पाठ को बदलने की आवश्यकता है, तो बस उपयोग करें $('#listItem').html( newHTML ); जहाँ newHTML एक चर है जिसमें पहले से ही नीचे का पाठ है।
ओजी सीन


0

मैं एक विशिष्ट समाधान के साथ आया था जो क्लोन के क्लोनिंग और संशोधन से बहुत अधिक कुशल होना चाहिए। यह समाधान केवल निम्नलिखित दो आरक्षणों के साथ काम करता है, लेकिन वर्तमान में स्वीकृत समाधान की तुलना में अधिक कुशल होना चाहिए:

  1. आपको केवल पाठ मिल रहा है
  2. आप जो पाठ निकालना चाहते हैं, वह बाल तत्वों से पहले है

उस ने कहा, यहाँ कोड है:

// 'element' is a jQuery element
function getText(element) {
  var text = element.text();
  var childLength = element.children().text().length;
  return text.slice(0, text.length - childLength);
}

0

बस सवाल की तरह, मैं पाठ के कुछ regex प्रतिस्थापन करने के लिए निकालने पाठ करने के लिए कोशिश कर रहा था लेकिन समस्याओं हो रही थी, जहां मेरे भीतर के तत्वों (यानी: <i>, <div>,<span> , आदि) भी हटाया हो रहे थे।

निम्नलिखित कोड अच्छी तरह से काम करता है और मेरी सभी समस्याओं को हल करता है।

यह यहां दिए गए कुछ उत्तरों का उपयोग करता है, लेकिन विशेष रूप से, केवल पाठ का स्थानापन्न करेगा जब तत्व है nodeType === 3

$(el).contents().each(function() { 
  console.log(" > Content: %s [%s]", this, (this.nodeType === 3));

  if (this.nodeType === 3) {
    var text = this.textContent;
    console.log(" > Old   : '%s'", text);

    regex = new RegExp("\\[\\[" + rule + "\\.val\\]\\]", "g");
    text = text.replace(regex, value);

    regex = new RegExp("\\[\\[" + rule + "\\.act\\]\\]", "g");
    text = text.replace(regex, actual);

    console.log(" > New   : '%s'", text);
    this.textContent = text;
  }
});

ऊपर दिए गए सभी तत्वों के माध्यम से लूप क्या है el(जो बस के साथ प्राप्त किया गया था $("div.my-class[name='some-name']");। प्रत्येक आंतरिक तत्व के लिए, यह मूल रूप से उन्हें अनदेखा करता है। पाठ के प्रत्येक भाग के लिए।if (this.nodeType === 3) ) यह केवल उन तत्वों के लिए रेगेक्स प्रतिस्थापन लागू करेगा। ।

this.textContent = textभाग बस प्रतिस्थापित पाठ है, जो मेरे मामले में, मैं की तरह टोकन लिए देख रहा था की जगह [[min.val]], [[max.val]]आदि

यह लघु कोड अंश किसी को भी यह पूछने में मदद करेगा कि प्रश्न क्या पूछ रहा था ... और थोड़ा और।


-1

बस में रख एक <p>या<font> और हड़पने कि $ ( '# ListItem फ़ॉन्ट')। पाठ ()

पहली बात जो दिमाग में आई

<li id="listItem">
    <font>This is some text</font>
    <span id="firstSpan">First span text</span>
    <span id="secondSpan">Second span text</span>
</li>

6
मुझे टैग में मुफ्त टेक्स्ट डालने पर नियंत्रण नहीं है, क्योंकि मैं जिस कोड से काम कर रहा हूं वह मेरे द्वारा नहीं बनाया गया था। अगर मैं बस उस पाठ को पकड़ सकता हूं, तो मैं इसे हटा सकता हूं और इसे इसके चारों ओर टैग के साथ बदल सकता हूं, या कुछ भी कर सकता हूं जो मुझे चाहिए। लेकिन फिर से, html पहले से लिखा हुआ है।
मेगामैट

आह अच्छा। फिर मुझे लगता है कि आपको परिणामों को फ़िल्टर करना होगा: S माफ़ करना।
डोरजन

-1

आप यह कोशिश कर सकते हैं

alert(document.getElementById('listItem').firstChild.data)

-2

यदि आंतरिक HTML और इनर टेक्स्ट एक समान हैं, तो यह जांचने के लिए एक अतिरिक्त शर्त का उपयोग करें। केवल उन मामलों में, पाठ को प्रतिस्थापित करें।

$(function() {
$('body *').each(function () {
    console.log($(this).html());
    console.log($(this).text());
    if($(this).text() === "Search" && $(this).html()===$(this).text())  {
        $(this).html("Find");
    }
})
})

http://jsfiddle.net/7RSGh/


-2

परिणाम को ट्रिम करने में सक्षम होने के लिए, DotNetWala का उपयोग करें:

$("#foo")
    .clone()    //clone the element
    .children() //select all the children
    .remove()   //remove all the children
    .end()  //again go back to selected element
    .text()
    .trim();

मुझे पता चला कि छोटे संस्करण का उपयोग करना जैसे document.getElementById("listItem").childNodes[0]jQuery के ट्रिम () के साथ काम नहीं करेगा।


3
ऐसा इसलिए document.getElementById("listItem").childNodes[0]है क्योंकि यह सादे जावास्क्रिप्ट है, आपको इसे jQuery फ़ंक्शन में लपेटना होगा$(document.getElementById("listItem").childNodes[0]).trim()
Red Taz

ठीक है कि समझ में आता है। Haha। धन्यवाद!
मैरियन गो

1
यह डॉटनेटवाला के उत्तर के समान है । आपने जो भी किया वह .trim()अंत तक जोड़ा गया । क्या यह उत्तर आवश्यक है?
सभी श्रमिक आवश्यक

-3

मैं एक jquery विशेषज्ञ नहीं हूँ, लेकिन कैसे,

$('#listItem').children().first().text()

1
यदि आप एक jquery विशेषज्ञ को नोट कर रहे हैं, तो पहले अन्य उत्तरों के माध्यम से पढ़कर एक विशेषज्ञ के रूप में अधिक क्यों नहीं बनें? ... उनमें से एक वस्तुतः वही हुआ जो आपने लिखा था, नीचे टिप्पणियों के साथ समझाएं कि यह क्यों नहीं है एक अच्छा विचार।
Oskar Holmkratz

-4

यह निष्कलंक, लेकिन मुझे लगता है कि आप कुछ इस तरह की कोशिश कर सकते हैं:

 $('#listItem').not('span').text();

http://api.jquery.com/not/


3
क्योंकि यह वैसा ही है $('#listItem').text()#listItemएक नहीं है <span>तो जोड़ने not('span')के लिए कुछ भी नहीं करता है।
थॉमस हिगिनबोटम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.