youaskedianswered
New Member
I have the following jQuery code in my PHP file (edited Jan 19 2010 @ 10:40 MST):\[code\]<?php $count = 0; foreach($attachments as $attachment) : echo '<script type="text/javascript"> $(\'#a_'.$count.'\').click(function() { $(\'#d_'.$count.'\').show(200); }); // if "no" is clicked $(\'#d_'.$count.' .no\').click(function() { $(\'#d_'.$count.'\').hide(200); }); // if "yes" is clicked $(\'#d_'.$count.' .yes\').click(function() { $(\'#d_'.$count.'\').hide(200); // update database table -- this is why I need the script inside the for loop! var jsonURL = \'http://path/to/update_db_script.php\'; $.getJSON(jsonURL, {\'post_id\' : '.$attachment->ID.'}, function(data) { alert(\'Thank you. Your approval was received.\'); }); $(\'#a_'.$count.'\').replaceWith(\'<span>Approved</span>\'); }); </script>'; echo '<li>'; if($attachment->post_excerpt == 'approved') { // Check the proof's status to see if it reads "approved" echo '<span>Approved</span>'; } else { ?> // If not yet approved, show options <a class="approve" id="a_<?php echo $count; ?>" href="http://stackoverflow.com/questions/2083818/#">Click to Approve</a> <div class="confirm-approval" id="d_<?php echo $count; ?>"> <p>Please confirm that you would like to approve this proof:</p> <a class="yes" href="http://stackoverflow.com/questions/2083818/#">Yes, I approve</a> <a class="no" href="http://stackoverflow.com/questions/2083818/#">No, not yet</a> </div><?php } ?> </li> <?php $count++;endforeach; ?>\[/code\]The page in question is available here. The "click to approve" links do not work (that's my problem).When I view source, the PHP variables appear to have echoed properly inside the jQuery:\[code\]<script type="text/javascript"> $('#a_0').click(function() { $('#d_0').show(200); }); ... etc ...</script>\[/code\]This looks correct, but nothing happens when I click any of the links. However, when I replace the PHP echo statements with plain numbers (0, 1, etc.) the click functions work as expected.You may be asking: why on earth do you have this inside a for loop? The reason is that I need to retrieve the attachment->ID variable and pass it to an external PHP script. When someone clicks "approve" and confirms, the external script takes the attachment->ID and updates a database value to read "approved".Why won't the click function fire when PHP is in place? Is there some kind of greater force at work here (e.g., hosting limitation), or am I missing a fundamental piece of how PHP and JavaScript interact?