PHP变量作为jQuery函数的一部分不起作用,但纯文本可以
我的
PHP文件中有以下jQuery代码(2010年1月19日编辑@ 10:40 MST):
<?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="#">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="#">Yes,I approve</a> <a class="no" href="#">No,not yet</a> </div><?php } ?> </li> <?php $count++; endforeach; ?> The page in question is available here.“点击批准”链接不起作用(这是我的问题). 当我查看源代码时,PHP变量似乎在jQuery中正确回显: <script type="text/javascript"> $('#a_0').click(function() { $('#d_0').show(200); }); ... etc ... </script> 这看起来是正确的,但是当我点击任何链接时没有任何反应.但是,当我用普通数字(0,1等)替换PHP echo语句时,单击函数按预期工作. 你可能会问:为什么你在for循环中有这个?原因是我需要检索attachment-> ID变量并将其传递给外部PHP脚本.当有人点击“批准”并确认时,外部脚本会使用attachment-> ID并更新数据库值以读取“已批准”. 当PHP到位时,为什么点击功能不会触发?在这里工作是否有某种更大的力量(例如托管限制),或者我错过了PHP和JavaScript如何交互的基本部分? 解决方法
由于您没有发布HTML,因此难以进行故障排除.
首先,我不确定为什么一个工作而另一个不工作,因为它输出的代码看起来是正确的.无论哪种方式,我仍然会做出一些改变.将a_0,a_1等和d_0,d_1等移动到id属性而不是类: <div><a href="#" id="a_0" class="approve">Click Me</a></div> <div class="confirm_approval" id="d_0">Show Me</div> <div><a href="#" id="a_1" class="approve">Click Me</a></div> <div class="confirm_approval" id="d_1">Show Me</div> 现在,不是在PHP中循环输出代码,而是将这个jQuery代码放在页面上一次: $(document).ready(function(){ $("a.approve[id^='a_']").click(function(e){ var id = this.id.replace('a_',''); // Get the id for this link $('#d_' + id + '.confirm-approval').show(200); e.preventDefault(); }); }); 此代码查找具有以a_开头的id的approve类的任何元素.单击此按钮时,它会从id a_0 = 0中删除该数字,并使用该ID查找confirm-approval元素并显示它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |