2010-12-02 10 views
1

hey, hatten keine Ahnung, welchen Titel sollte dieser Beitrag hat, schwer zu beschreiben :)jquery: div id lesen und passendes div entfernen?

Ich habe eine dynamische ids mit einer Reihe

<div id="post-full-116">Content</div> 

<div id="post-116">Content</div> 

i die dynamische Nummer abgefragt werden soll (in diesem Fall 116) von id = "post-full-116" und wenn ein anderes div auf der Seite mit id = "post-116" existiert, möchte ich das entfernen.

klingt seltsam ich weiß. also bekommst du die idee dahinter, das div mit id = "post-number" hält eine Vorschau eines Posts und das div mit id = "post-full-number" hält den vollen Inhalt eines Posts.

ich möchte nicht die Vorschau eines Posts anzeigen, wenn der vollständige Post bereits angezeigt wird - also möchte ich ihn einfach mit jquery ausblenden. Ich weiß, dass ich das vorher auf der Serverseite machen sollte, aber in diesem Fall wäre jquery perfekt.

irgendeine idee, wie ich die nummer der dynamischen id abfragen und das entsprechende div mit der gleichen nummer entfernen kann?

danke

+0

diese divs passieren würde, nicht Klassen jeglicher Art haben, würden sie? 'class =" post "' würde sehr helfen, die Auswahl zu erleichtern. – zzzzBov

Antwort

0

Ich denke, Sie so etwas tun würde:

$(function() { 
    $('[id^=post-full]').each(function() { 
     var num = $(this).attr('id').replace(/post\-full\-/,''); 
     $('#post-' + num).hide(); 
    }); 
}); 

, dass alle „voll“ Beiträge greifen sollten, um die Anzahl der Post finden, und blenden Sie die „Vorschau“ Version davon.

UPDATE:

Hier ist eine Live-Demo davon: http://jsfiddle.net/Ender/saUQf/

1

.toggle() die div, wenn seine versteckten, ein- und ausblenden es seine falls sichtbar. Beispiel:

$("#post-full-116").toggle(); 
$("#post-116").toggle(); 

Alternativ können Sie überprüfen, ob die div mit dieser war sichtbar oder versteckt:

if ($"#post-116").is(":visible") 
{ 
    $("#post-116").hide(); 
    $("#post-full-116").show(); 
} 
else 
{ 
    $("#post-116").show(); 
    $("#post-full-116").hide(); 
} 
1

Können Sie nur eine < div id = "post-116" > Inhalt </div haben > und etwas wie class = "full" hinzufügen, wenn es die Vollversion ist. Wenn Sie von der Vorschau zur Vollansicht wechseln, finden Sie nur das Element mit der ID "post-116" und ersetzen den Inhalt und fügen das Attribut hinzu. Wenn Sie von der Vollansicht zur Vorschau wechseln, suchen Sie das div erneut und ersetzen Sie den Inhalt und entfernen Sie die Klasse.

3
$('div[id^="post-full"]').each(function(){ 
    $('#post-' + this.id.split('-')[2]).remove(); 
});