2016-04-28 10 views
1

Ich habe Absatz, der einen mehr gelesenen Link darin geschachtelt hat.Text abschneiden, ohne verschachtelte Verbindung zu treffen

<p>Lorem ipsum blah blah blah <a href="link">Read More</a></p> 

Ich brauche den Absatztext zu kürzen und es mit einem Auslassungszeichen enden, ohne etwas in dem <a></a> Tag zu beeinflussen.

Ich kann die Kürzung des Textes mit $(p).text($(p).text().substring(0,n)+'...'); tun, aber natürlich, wenn ich den Absatz mit $(p).text() greifen würde, würde es die Verbindung enthalten und würde es abschneiden.

Gibt es eine Möglichkeit zu greifen, und ersetzen Sie dann mit der abgeschnittenen Version, der Text der <p> ohne Auswirkungen auf die </a>. Am besten ohne Regex zu verwenden oder den Link zu klonen und neu anzuhängen?

+1

wollen Sie diese auf Anker-Tag, indem Sie tun? oder beim Laden der Seite? –

+0

@SunilKumar Dies würde beim Laden der Seite passieren – DasBeasto

+0

Werfen Sie einen Blick: http://stackoverflow.com/questions/4106809/how-can-i-change-an-elements-text-without-change-its-child-elements –

Antwort

2

Sie können so etwas mit nodeType tun. Dann können Sie den Wert unter Verwendung der textContent Eigenschaft ändern.

Für einen Textknoten wird die Eigenschaft nodeType 3. Rückkehr

alert($('p').contents().filter(function() { 
 
    return this.nodeType == 3; 
 
})[0].textContent); 
 

 
//set new value 
 
$('p').contents().filter(function() { 
 
    return this.nodeType == 3; 
 
})[0].textContent = 'New text ';
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<p>Lorem ipsum blah blah blah <a href="link">Read More</a></p>

+0

sieht gut aus !! Stört es Sie zu erklären, was 'this.nodeType == 3;' tut? –

+0

@Reddy Ich habe gerade getan. – RRK

+0

macht Sinn +1 .. –

1

$(function() { 
 
    
 
    var x = $("p").contents().get(0).nodeValue; // This will grab the text ignoring the other nodes: 
 

 
    $("p").html(x.substring(0, 5) + '...' + $("p").find("a").wrap("<p>").parent().html()); // Setting x and appending the <a> html 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<p>Lorem ipsum blah blah blah <a href="link">Read More</a> 
 
</p>

0

Sie folgende Skript ausprobieren können:

$(document).ready(function() { 
 
     var hrefTag = $('a').attr('href'); 
 
     $('p').html('<a href="' + hrefTag + '">Read More</a>'); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p>Lorem ipsum blah blah blah <a href="link">Read More</a></p>