Php JQuery未执行-但正在加载?
我对一个非常简单的JQuery代码有点问题-我一直在通过以下方式进行故障排除:Php JQuery未执行-但正在加载?,php,javascript,jquery,html,dom,Php,Javascript,Jquery,Html,Dom,我对一个非常简单的JQuery代码有点问题-我一直在通过以下方式进行故障排除: 将JQuery代码移动到文档末尾 使用google托管的JQuery和本地托管 使用$(document).ready-和不使用 通过取出PHP生成的代码,将其插入HTML文档并在不使用PHP的情况下尝试来简化它 使用firebug插入代码-注意:这实际上非常有效 以下是JQuery代码: <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script language="text/javascript">
$(document).ready( function(){
$('.del').click(function() {
alert(this.id);
});
});
</script>
$(文档).ready(函数(){
$('.del')。单击(函数(){
警报(this.id);
});
});
以下是PHP代码:
while($row = mysql_fetch_array($reports)){
echo '<tr><th>'.$row['title'].'</th>';
echo '<td><a href="modify.php?site='.$row['id'].'">Modify</a></td>';
echo '<td> <img class="del" id="'.$row['id'].'" src="../right_place.jpg" width="75" height="75"></td>';
echo '<td><a href="../report.php?site='.$row['id'].'"><img src="../'.$row['thumb'].'" width="75" height="75"></a></td></tr>';
}
while($row=mysql\u fetch\u数组($reports)){
回显“.$row['title']”;
回声';
回声';
回声';
}
这会生成这种HTML:
<tr>
<th>Site 2</th>
<td><a href="modify.php?site=2">Modify</a></td>
<td><img class="del" id="2" src="../right_place.jpg" width="75" height="75"></td>
<td><a href="../report.php?site=2"><img src="../placeholder.jpg" width="75" height="75"></a></td>
</tr>
<tr>
<th>Site 1</th>
<td><a href="modify.php?site=1">Modify</a></td>
<td><img class="del" id="1" src="../right_place.jpg" width="75" height="75"></td>
<td><a href="../report.php?site=1"><img src="../placeholder.jpg" width="75" height="75"></a></td>
</tr>
站点2
场地1
我目前已经在谷歌浏览器和IE浏览器上试用过了。最有趣的一点是,如果我将JQuery代码复制并粘贴到firebug中,它会完美地执行,而且没有错误?!但是,当它位于页面中时,它将不会执行。(因此我尝试将代码放在页面底部的一个原因!)
注意:为了调试/测试的目的,JQuery代码也被简化了-实际上,在对执行MySQL查询的PHP脚本进行AJAX调用之前,它会提示用户进行确认。尝试将doc ready函数更改为:
$(document).ready( function(){
$('.del').live('click', function() {
alert(this.id);
});
});
我会使用方法:
$(function() {
$("img").delegate(".del", "click", function() {
alert(this.id);
});
});
这里有几件事不对 1) 。不要使用数字标识。ID必须以字母开头 2) 。脚本标记不正确,使用语言说明符而不是类型说明符。应改为:
<script type="text/javascript">
解决了这个问题,它应该会工作。只要删除language=“text/javascript”它就会工作。它工作得很好,一定与您的PHP代码有关。我在你的图片中添加了alt属性,这样我们就可以点击了。我刚刚测试了这个功能,它可以正常工作(虽然我把图片改成了spans,这样我就可以点击了)。您的PHP代码是通过AJAX加载的吗?如果是这样的话,您需要使用
live()
或delegate()
方法来连接事件。我以前从未见过JSFIDLE-很好的网站,为大家指出它干杯!这是最后的脚本标签,但我很高兴我不是唯一一个忽视它的人!为你们的帮助干杯!顺便说一句,我实际上为你测试了我的解决方案:),是的。。。我的工作。javascript根本没有使用旧的脚本标记执行。为什么不使用数字ID?我在我的项目中使用数字ID-目前没有问题all@evgeniy.labusnkiy它们违反了规范。你不能依靠它们来跨浏览器工作。@John-我完成了15个以上的大项目-从来没有过problems@evgeniy.labusnkiy|这是规范合规性的关键。你可以用“一般”有效的东西掷骰子。。。但你不能测试所有东西。这就是为什么要编写规范并针对这些怪癖进行修改,而不是相反。问题是代码中没有type=“text/javascript”。Op有'language=“text/javascript”“。是的,我接受了John的答案,因为他关于数字ID的回答也是正确的——但我也投票支持你!干杯