2016-06-05 4 views
7

किसी विशिष्ट DOM तत्व (उदा। <mark>) के संदर्भ में, हम उस तत्व को पूरा शब्द कैसे प्राप्त कर सकते हैं?एक विशिष्ट तत्व युक्त पूर्ण शब्द प्राप्त करें

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

H<mark>ell</mark>o Wor<mark>l</mark>d, and He<mark>llo</mark>, <mark>Pluto</mark>! 

मैं निम्नलिखित उत्पादन प्राप्त करने की उम्मीद:

  • पहले <mark>: Hello
  • दूसरा: World
  • तीसरा: Hello
  • चौथा: Pluto

var $marks = $("mark"); 
 

 
var tests = [ 
 
    "Hello", 
 
    "World", 
 
    "Hello", 
 
    "Pluto", 
 
]; 
 

 
function getFullWord($elm) { 
 
    // TODO: How can I do this? 
 
    // \t \t This is obviously wrong. 
 
    return $elm.html(); 
 
} 
 

 
var $marks = $("mark"); 
 
tests.forEach(function(c, i) { 
 
    var word = getFullWord($marks.eq(i)); 
 
    if (word !== c) { 
 
    alert("Wrong result for index " + i + ". Expected: '" + c + "' but got '" + word + "'"); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
H<mark>ell</mark>o Wor<mark>l</mark>d, and He<mark>llo</mark>, <mark>Pluto</mark>!

उत्तर

5

आप तेजी से और कॉम्पैक्ट कोड (एक-लाइनर) की जरूरत है, इस प्रयास करें:

var $marks = $('mark'); 

$marks.each(function() { 
    var wholeWord = (this.previousSibling.nodeValue.split(' ').pop() + 
        this.textContent + 
        this.nextSibling.nodeValue.split(' ')[0] 
        ).replace(/[^\w\s]/gi, ''); 
}); 

JSFiddle (कंसोल में प्रवेश और टिप्पणियों के साथ)

+0

मैं इसे जितना तेज़ कर सकता हूं, लेकिन यदि आप चाहें तो अधिक पठनीय – Max

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