在我的html页面中,我写道:
$('div > input').click(function(){
alert(1);
});
我的div是这样的:
<div id="CPE202" class="course">
<input type="checkbox" name="core" value="core" />
Microprocessor programming
<input type="radio" name="remove" value="remove" class="remove"/>
</div>
然后在此页面运行时它无法工作。这些代码的目的是在单击单选按钮时尝试提醒1。奇怪的是,当我使用Firebug进行调试时,我输入与上面的函数完全相同,并且它有效。这有什么不对?
谢谢。
[edit]我在这里提到的已经在正确的位置,意思是在$(文件)....
我也试过这个:
$('div input').click(function(){
alert(1);
});
和此:
$('input:radio').click(function(){
alert(1);
});
它们都不起作用。看起来我在这里使用的任何复杂选择器都没有用处:(
很抱歉我在这里遇到了困惑。我试过了
$('div > input').css({ border: '1px solid red' });
但它也不起作用。
另外1个信息是<div id=...>
由另一段Jquery代码动态创建。我想知道是否是原因。
答案 0 :(得分:4)
新答案(基于问题编辑):如果在注册事件侦听器后添加了元素,则这些侦听器将不适用于这些元素(事件侦听器显式添加到单个DOM节点,而不是“选择器”, DOM真的一无所知。最简单的解决方案是使用jQuery的live
方法:
$('div > input').live('click', function() { ... });
live
使用事件委派的基本实现:click
DOM节点收到的document
事件已从div > input
冒出,jQuery将触发您的事件当事件冒泡时,该元素的监听器。
陈旧答案:您确定选择器是失败点吗?试试$('div > input').css({ border: '1px solid red' });
,查看相关元素是否受到影响。如果是,那么一些早期注册的点击处理程序可能正在使用event.preventDefault()
或其他一些阻止侦听器被触发的方法。
答案 1 :(得分:2)
上面的脚本是如何嵌入页面的?如何调用它?
您应该将其放在HTML的head部分,如下所示:
<html>
<head>
<title>blah</title>
<script type="text/javascript">
$(function()
{
$('div > input').click(function(){
alert(1);
});
});
</script>
</head>
<body>
...
</body>
</html>
答案 2 :(得分:1)
什么方法不起作用?你在执行onload的函数中有那些代码吗?像..
$(document).ready(myfunction)
答案 3 :(得分:1)
您需要触发此代码才能加载: 即包装你的陈述
$(function(){
$('div > input').click(function(){
alert(1);
});
});
当JQuery在页面加载时准备就绪时会触发它。
答案 4 :(得分:1)
确保您的代码放在$(document).ready(..)
的回调中:
$(document).ready(function(){
$('div > input').click(function(){
alert(1);
});
});
答案 5 :(得分:0)
在这里工作。您确定在加载文档后调用了代码吗?像
$(function() {
$('div > input').click(function(){
alert(1);
});
})
答案 6 :(得分:0)
使用“each”遍历不同的元素并分配click事件。这有效:
$(document).ready(function() {
$('div > input').each(function() {
$(this).click(function(){
alert(1);
});
});
});