JQuery 未执行 - 但正在加载?
我对非常简单的 JQuery 代码有点问题 - 我一直在通过以下方式进行故障排除:
- 将 JQuery 代码移至文档末尾
- 使用 google 托管的 JQuery 和本地托管
- 使用 $(document) .ready - 并且无需
- 通过取出 PHP 生成的代码,将其插入 HTML 文档并在没有 PHP 的情况下尝试
- 使用 firebug 插入代码来简化它 - 注意:这实际上完美地工作
这是 JQuery 代码:
<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>
这是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>';
}
生成这种 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>
我目前已在 Google Chrome 和 Internet Explorer 中尝试过。最有趣的方面是,如果我将 JQuery 代码复制并粘贴到 firebug 中,它会完美执行并且没有错误?!然而,当它在页面中时,它不会执行。 (因此我尝试将代码放在页面底部的原因之一!)
注意:JQuery 代码也为了调试/测试目的而进行了简化 - 实际上,它会在对 AJAX 调用之前提示用户进行确认执行 MySQL 查询的 PHP 脚本。
I've got a bit of a problem with a very simple JQuery bit of JQuery code - I've been troubleshooting it by:
- Moving the JQuery code to the end of the document
- Using google hosted JQuery and local hosted
- Using the $(document).ready - and without
- Simplifying it by taking out the PHP generated code, inserting it in a HTML document and trying it without the PHP
- Inserting the code with firebug - note: This actually works perfectly
Here's the JQuery code:
<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>
Here's the PHP code:
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>';
}
Which generates this kind 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>
I've currently tried it in Google Chrome and Internet Explorer. The most interesting aspect of this is that if I copy and paste the JQuery code in to firebug, it executes perfectly and there are no errors?! However when it is in the page it will not execute. (Hence one reason I tried putting the code at the bottom of the page!)
Note: The JQuery code is also simplified for debugging/testing purposes - in reality it will prompt the user for confirmation before making an AJAX call to a PHP script that performs a MySQL query.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这里有一些问题。
1).不要使用数字 ID。 ID 必须以字母开头。
2)。您的脚本标记不正确,使用语言说明符而不是类型说明符。它应该是:
修复这个问题,它应该可以工作。
Couple of things wrong here.
1). Don't use numeric IDs. IDs must begin with a letter.
2). Your script tag is incorrect, using a language specifier instead of type specifier. It should read:
Fix that and it should work.
只要删除 language="text/javascript" 就可以了
Just remove language="text/javascript" and it will work
尝试将您的文档准备功能更改为:
Try changing your doc ready function to:
我将使用 delegate() 方法:
I would use the delegate() method: