Different behavior of Jquery/PHP after refresh

I have a page that allows users to post comments via jquery’s ajax. These comments can also be edited. The problem is that after i type a comment and click “edit” the jquery is not executed (ideally a modal should popup). When i type a comment, refresh and then click “edit” the jquery runs perfectly. I have been trying to debug this myself for quite some time, but I don’t see why the refresh makes the difference.


          //this part takes the comment and enters it into a mysql database and then appends the comments div to write the new comment.  This code works.
    $  ('#answerCommentTextarea').keypress(function(e) {
    if(e.which == 13) {
             if ($  .trim($  (this).val()) == ""){
                $  ('#nocomment').modal('show');
             else {

        var comment = $  ('#answerCommentTextarea').val();

        $  .post('../writeanswercomment.php' ,
        {comment: comment , user: <?php echo $  _SESSION['id']; ?>, questionid: <?php echo $  _GET['q']; ?>},

             $  ('#answerCommentContainer').append(response);
           $  ('#answerCommentTextarea').val('');


This is the output of writeanswercomment.php. This is the BAD code. When i click the edit button here, the below Jquery does not run. Even the preventDefault() doesnt work because # appears in the url

echo "<div class='singleComment'>
<b><a href='../profile.php?p=$  user'>$  name</a></b>
$  comment
<input type='hidden' value='$  qid' name='hiddenComment' class='hiddenComment' />
<a href='#' style='color: orange;' class='editComment'><b>Edit</b></a>
<div class='commentBar'>Just now</div>

This is the Jquery that works after the refresh, but does not work when the comment is entered and edited without any refresh.

$  ('.editComment').click(function(e){
    var s_comment = $  (this).prev('.hiddenComment').attr('value');
     $  .post('../editcomment.php' , {comment: s_comment} , function(response){
        $  ('#modalEditComment').val(response);
        $  ('#editCommentModal').modal('show');


If the comment is not entered via Jquery’s ajax then it was previously entered and stored in the database. This is the code that runs when a comment has already been entered. (This is the GOOD code. When i click the edit button, the above Jquery runs perfectly).

    echo "<div class='singleComment'>

                                <b><a href='/profile.php?p=$  comment_user[$  a]'>$  name[$  a]</a></b> $  comment[$  a]
                                <input type='hidden' value='$  comment_id[$  a]' name='hiddenComment' class='hiddenComment'/>
                                $  current_time=time();
                                if ($  _SESSION['id'] == $  comment_user[$  a] && $  current_time - $  comment_time[$  a] <60){
                                    echo " <a href='#' style='color: orange;' class='editComment'><b>Edit</b></a>";
                                    $  periods = array("second", "minute", "hour", "day", "week", "month", "year", "decade");
                                    $  lengths = array("60","60","24","7","4.35","12","10");
                                    $  now = time();
                                    $  difference     = $  now - $  comment_time[$  a];
                                    $  tense         = "ago";
                                    for($  j = 0; $  difference >= $  lengths[$  j] && $  j < count($  lengths)-1; $  j++) {
                                    $  difference /= $  lengths[$  j];
                                    $  difference = round($  difference);
                                    if($  difference != 1) {
                                    $  periods[$  j].= "s";

                                echo "<div class='commentBar'>$  difference $  periods[$  j] ago</div>

newest questions tagged jquery – Stack Overflow

About Admin