87
rated 0 times
[
88]
[
1]
/ answers: 1 / hits: 19227
/ 12 Years ago, sat, march 31, 2012, 12:00:00
How do I get the text of an element without the children?
Neither element.textContent
nor element.innerText
seem to be working.
HTML:
<body>
<h1>Test Heading</h1>
<div>
Awesome video and music. Thumbs way up. Love it. Happy weekend to you and your family. Love, Sasha
</div>
</body>
<script src=http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js></script>
<script type=text/javascript>
fool(body);
</script>
and here's the fool
function:
jQuery.fn.justtext = function(text) {
return $(this).clone()
.children()
.remove()
.end()
.text();
};
function fool(el) {
reverse(el);
function reverse(el) {
$(el).children().each(function() {
if($(this).children().length > 0) {
reverse(this);
if($(this).justtext() != )
reverseText(this);
} else {
reverseText(this)
}
});
}
function reverseText(el){
var text = el.textContent;
var frag = text.toString().split(/ /);
var foo = ;
var punctation_marks = [.,,,?,!, ,:,;];
for(i in frag){
if(punctation_marks.indexOf(frag[i]) == -1)
foo += actualReverse(frag[i],punctation_marks) + ;
}
el.textContent = foo;
}
function actualReverse(text,punctation_marks) {
return (punctation_marks.indexOf(text.split()[text.split().length-1]) != -1)?text.split().slice(0,text.split().length-1).reverse().join() + text.split()[text.split().length-1] : text.split().reverse().join();
}
}
edit: using node.nodeType
doesn't really help and here's why:
Imaginge the following HTML
<td class=gensmall>
Last visit was: Sat Mar 31, 2012 10:50 am
<br>
<a href=./search.php?search_id=unanswered>View unanswered posts</a> | <a href=./search.php?search_id=active_topics>View active topics</a>
</td>
if I'd use nodeType
, only the text of the a
element would change , but not the td
itself (last visit....)
More From » jquery