2016-07-29 8 views
0

Ich muss "Antworten anzeigen" ausblenden, wenn ich klicke, um sie anzuzeigen. Das Problem ist, dass wenn ich auf "Antworten anzeigen" klicke, alle "Antworten anzeigen" -Schaltflächen ausblenden. Ich muss nur dasjenige verstecken, auf das ich klicke. Dies ist der jQuery-Code:

  $(".replies_show").click (function(e){ 
      $(".replies_show").replaceWith(" "); 
      $(this).next(".replies").show(); 
      e.preventDefault(); 
     }); 
+1

'$ (this) .hide()'? –

Antwort

0

$(".replies_show") alle Elemente wählt die Klasse mit, damit Sie alle sind auswählen und dann replaceWith auf alle von ihnen wieder anwenden. Jedoch bezieht sich this innerhalb dieser Rückruffunktion auf das gerade angeklickte Element (d. H. Das einzige angeklickte Element, nicht alle von ihnen).

Verwenden Sie nicht replaceWith Funktion nur zum Ausblenden eines Elements, verwenden Sie stattdessen .

So ersetzen

$(".replies_show").replaceWith(" "); 

Mit

$(this).hide(); 
+0

Aber dann '$ (this) .next (". Antworten "). Show();' nicht ausgeführt. Antworten werden nicht angezeigt –

+0

@labasGamePagevisogero Bitte sehen Sie meine bearbeitete Antwort. –

+0

Funktioniert! Ich werde es nach 2 Minuten akzeptieren –

0

können Sie this verwenden das aktuelle Element zu erhalten. Andernfalls wählen Sie alle Elemente mit der Klasse .replies_show aus.

$('.replies_show').on('click', function(e, el) { 
 
    $(el).replaceWith(' '); // Does what you're looking for 
 

 
    $(el).hide(); // Might be better, depending on what you're doing 
 
    
 
    $(this).next('.replies').show(); 
 
    
 
    e.preventDefault(); 
 
});

0

Verwenden .hide() Funktion nicht .replaceWith()

$(".replies_show").click (function(e){ 
      $(this).hide(); 
      $(this).next(".replies").show(); 
      e.preventDefault(); 
     }); 
0

Wie Sie nur clicked Artikel Ziel benötigen, so dass Sie $(this) in Callback-Funktion verwenden müssen, so etwas wie unten:

$(".replies_show").click (function(e){ 
    var $this = $(this); // cache $(this)/clicked element 

    $this.hide();   // clicked item will be hide (display: none) 
    $this.next(".replies") // next matched item of clicked item 
     .show();   

    e.preventDefault(); 
}); 
Verwandte Themen