Rya*_*ney 3 javascript 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; ?>
Run Code Online (Sandbox Code Playgroud)
有问题的页面可在此处获得."点击批准"链接不起作用(这是我的问题).
当我查看源代码时,PHP变量似乎在jQuery中正确回显:
<script type="text/javascript">
$('#a_0').click(function() {
$('#d_0').show(200);
});
... etc ...
</script>
Run Code Online (Sandbox Code Playgroud)
这看起来是正确的,但是当我点击任何链接时没有任何反应.但是,当我用普通数字(0,1等)替换PHP echo语句时,单击函数按预期工作.
你可能会问:为什么你在for循环中有这个?原因是我需要检索attachment-> ID变量并将其传递给外部PHP脚本.当有人单击"批准"并确认时,外部脚本将获取附件 - > 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>
Run Code Online (Sandbox Code Playgroud)
现在,不是在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();
});
});
Run Code Online (Sandbox Code Playgroud)
这个代码是找到任何a与该元素approve具有一个类id是开头 a_.单击此按钮时,它会从id中获取数字a_0 = 0并使用该ID查找confirm-approval元素并显示它.
| 归档时间: |
|
| 查看次数: |
655 次 |
| 最近记录: |