2016-04-27 10 views
0

Ich habe einen Kommentar Form haben, die durch ein PHP gezeigt wird, während Schleife wieWie Form standardmäßig verstecken und zeigen auf, klicken Sie

Post 1 
Comment box 1 

Post 2 
Comment box 2 

i das Kommentarfeld standardmäßig ausblenden möchten, und wenn der Benutzer klicken Sie auf Kommentar Link dann sollte die Form

hier gezeigt werden, ist das, was ich

$(document).ready(function() { 

    $("#showActionComment").hide(); 
    $("#showActionComment").click(function() { 
     $("#comForm").show(); 
    }); 
}); 

Html

versucht haben,

Aufgrund Schleife kann es 15 Post oben Code sein nicht

+1

Sie sollten CSS-Element verstecken zunächst dh '.form -horizontal {display: none;} ' – Satpal

+0

' $ (Dokument) .on ('click', '#showActionComment', function() { \t $ ("# comForm"). Show(); }); 'für dynamisch hinzugefügtes Formular – guradio

Antwort

3

Sie erstellen Elemente in einer Schleife mit derselben ID. Bezeichner in HTML müssen eindeutig sein andernfalls ist HTML ungültig. Sie können Klassenauswahl und dort Beziehung verwenden, um zwischen Elementen

CSS .showActionComment {display: none;} zu durchqueren

PHP Script HTML zu erzeugen

php while loop starts here 

    <a href="javascript:void(0);" class="comForm">Comment</a> 
    <form action="/comment.php" class="form-horizontal showActionComment"> 
     <input type="text" name="comment"> 
    </form> 

php while loop ends here 

jQuery Script Sie müssen ein Click-Ereignis auf comForm Element nicht form abonnieren. Hier im Code-Ausschnitt habe ich .next()

verwendet Holen Sie sich die unmittelbar folgenden Geschwister jedes Elements in der Menge der übereinstimmenden Elemente.

$(document).on('click',".comForm", function(event) { 
    event.preventDefault(); 
    $(this).next(".showActionComment").show(); 
}); 

Anmerkung: Mit Event Delegation.on() delegierte-Ereignisse Ansatz, wenn Elemente dynamisch zu erzeugen.

Allgemeine Syntax

$(document).on('event','selector',callback_function) 
+0

Satpal es funktioniert nicht –

+0

@SagarSingh, was nicht funktioniert? Bitte seien Sie spezifisch und ausführlich, so dass wir Ihnen helfen können – Satpal

+0

nach dem Klicken auf Kommentar nichts passiert, ich überprüfte die Konsole auch, aber kein Fehler und wenn ich $ (this) .next entferne und ersetze es mit $ (". ShowActionComment").); es funktionierte, aber wenn ich auf Kommentar klickte, zeigte es mir alle das Kommentarformular –

0

Stellen Sie die Anzeige in meinem Fall arbeiten: keine Eigenschaft für die Klasse.

.form-horizontal{ 
    display:none 
} 

Wenn Sie die Seite aktualisieren, wird das Formular nicht angezeigt.
Bei Klickereignis ändert sich Anzeige: keine bis Anzeige: Block gemäß Ihrem Klickereignis.

0

ausblenden das Formular standardmäßig über CSS

#comForm { 
display:none; 
} 

und dann einmal die Taste Show geklickt wird es

$("#showActionComment").click(function() { 
     $("#comForm").show(); 
    }); 
0

Vielleicht haben Sie damit gemeint - Notiz-IDs müssen eindeutig sein:

$(function() { 
 
    $(".showForm").on("click",function(e) { 
 
    e.preventDefault(); 
 
    $(this).next(".showActionComment").toggle(); 
 
    }); 
 
});
.showActionComment { display:none }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<a href="enableJavaScript.html" class="showForm">Comment</a> 
 
<form action="/comment.php" class="form-horizontal showActionComment"> 
 
<input type="text" name="comment"> 
 
</form><br/> 
 
<a href="enableJavaScript.html" class="showForm">Comment</a> 
 
<form action="/comment.php" class="form-horizontal showActionComment"> 
 
<input type="text" name="comment"> 
 
</form>

Wenn Sie die Kommentare und Links mit AJAX laden, ändern

$(".showForm").on("click",function(e) { 

zu

$(document).on("click",".showForm",function(e) { 
+0

Code funktioniert total gut aber wenn ich auf Link klicke, zeigt es die Form des ersten Beitrags, da alle IDs gleich sind und es in der Schleife ist –

+0

Ändere die IDs zu CLASS - es zeigt NUR den NÄCHSTEN Kommentar nach dem Link in meinem Code – mplungjan

+0

die ersten 15 Post werden einfach abgerufen aus der Datenbank nach 15 werden alle Beiträge von Ajax geholt! Code scheint nicht zu funktionieren –

Verwandte Themen