2012-01-16 49 views
1

下面是html代码:无法调用JS文件单击事件

<input type="button" id="abc" name="TechSupport_PartsOrder" value="Open Editor" /> 

下面是jQuery代码:

$('#abc').click(function() { 
alert('x'); 
}); 

现在,当我把上面的jQuery代码到js文件它不工作,而当我把它在页面中工作正常。为什么发生这种情况我不知道。

如果我打电话按钮这样的功能的onclick:

<input type="button" id="abc" name="TechSupport_PartsOrder" onclick="abc()" value="Open Editor" /> 

JQuery的:

function abc() 
{ 
alert('x'); 
} 

效果很好..

+0

“现在,当我把上面的jQuery代码到js文件它不工作”。那么,您在控制台中遇到什么错误? – j08691 2012-01-16 05:16:06

回答

7

裹在ready处理程序的代码:

$(function() { 
    $('#abc').click(function() { 
     alert('clicked'); 
    }); 
}); 
+0

是不是只是把它包装在一个匿名函数? – thescientist 2012-01-16 05:18:59

+0

@thescientist:是的,但是它将它作为参数传递给'$'函数,该函数将在DOM加载后调用传递的函数。 – icktoofay 2012-01-16 05:27:17

+0

很酷。很高兴知道。因此,使用这种语法就像将事件添加到将在DOM加载(就绪)时执行的队列一样? – thescientist 2012-01-16 05:36:43

0

以下问题解决了吗?

$(function(){ 
    $('#abc').click(function() { 
    alert('x'); 
    }); 
}) 

您的代码可能“#abc”之前获取调用已经被添加到DOM

1

你确保后的事件处理程序是越来越定义的DOM加载?这就是为什么jQuery的建议把所有的代码

$(document).ready(function(){ 
    //XXX code goes here 
}); 

你是事件处理程序可能会尝试元素已经被加载到DOM之前进行分配。

+0

它实质上与使用window.onload相同 – thescientist 2012-01-16 05:18:20