2016-06-05 14 views
7

Belirli bir DOM öğesine (örn. <mark>) yapılan referansa sahip olarak, bu öğeyi içeren tam sözcüğü nasıl alabiliriz? ÖrneğinBelirli bir öğeyi içeren bir sözcüğü tam olarak alın

:

aşağıdaki çıktıyı almak bekliyoruz
H<mark>ell</mark>o Wor<mark>l</mark>d, and He<mark>llo</mark>, <mark>Pluto</mark>! 

:

  • İlk <mark>: Hello
  • İkincisi: World
  • Üçüncüsü: Hello
  • Dördüncü: 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>!
hızlı ve kompakt kod (one-liner) gerekiyorsa

cevap

5

, şunu deneyin:

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

(konsoluna günlük ve yorumlarla) Onu olabildiğince hızlı yapabilirim, ama isterseniz daha okunabilir – Max

İlgili konular