使用jQuerys document.Ready函数将事件附加到元素
普通样式使用jQuerys document.Ready函数将事件附加到元素,jquery,javascript-events,coding-style,document-ready,Jquery,Javascript Events,Coding Style,Document Ready,普通样式 <a href="#" id="myLink" onclick="myFunc();">click me</a> function myFunc() { alert('hello!'); } <a href="#" id="myLink">click me</a> $(document).ready(function() { $("#myLink").click(function() { alert(
<a href="#" id="myLink" onclick="myFunc();">click me</a>
function myFunc() {
alert('hello!');
}
<a href="#" id="myLink">click me</a>
$(document).ready(function() {
$("#myLink").click(function() {
alert('hello!');
});
});
函数myFunc(){
警惕(“你好!”);
}
jQuery风格
<a href="#" id="myLink" onclick="myFunc();">click me</a>
function myFunc() {
alert('hello!');
}
<a href="#" id="myLink">click me</a>
$(document).ready(function() {
$("#myLink").click(function() {
alert('hello!');
});
});
$(文档).ready(函数(){
$(“#myLink”)。单击(函数(){
警惕(“你好!”);
});
});
我刚刚开始使用jQuery,但我想知道这两者之间的区别是什么。我应该更喜欢jQuery方法吗?这样做有什么好处吗
我不喜欢在用jQuery方法阅读html时,没有任何关于链接作用的线索。我发现jQuery attach方法在附加到多个元素(例如,
$(“#myTable tr”))时非常有用。单击(函数(e){…};
),但在处理单个元素时,我不知道应该使用哪种方法。出于几个原因,我喜欢第二种方法
JQuery处理事件的方式定义为不引人注目(),通常优于“标准”方式,因为您在逻辑和表示之间有明确的分离,并且通常代码更易于重用
更不用说JQuery(但其他库也做同样的事情)为您处理浏览器不一致问题。我知道您的担忧,因为我也有类似的担忧,并决定使用JQuery和名称空间来绑定javascript名称空间中的事件。这就是我如何将事件与单个元素挂钩,以及将事件与具有相同类或标记名的多个元素挂钩的方法 基本上我给我的点击、悬停、鼠标悬停等命名了名称空间。。。事件,然后调用my document.ready中的命名空间事件。这样做的原因是我可以从一个地方查看我所有的点击、悬停、鼠标悬停事件
<script type="text/javascript">
var Page1 = {
Events: {
click: {
elementid: {
func: function(evt) { //where elementname is the id of your element
//your code here
},
selector: "#someId"
}
elementclass: {
func: function(evt) { //where elementclass is the class of your element(s)
//your code here
},
selector: ".someClass"
},
mouseover: {
//similar to click namespace
},
mouseout: {
//similar to click namespace
},
....
}
};
$(document).ready(function() {
for (var key in Page1.Events) {
for (var eventKey in Page1.Events[key]) {
$(Page1.Events[key][eventKey].selector).bind(key, Page1.Events[key][eventKey].func);
}
}
});
</script>
变量第1页={
活动:{
点击:{
元素ID:{
func:function(evt){//其中elementname是元素的id
//你的代码在这里
},
选择器:“#someId”
}
元素类:{
func:function(evt){//其中elementclass是元素的类
//你的代码在这里
},
选择器:“.someClass”
},
鼠标悬停:{
//类似于单击名称空间
},
灭鼠器:{
//类似于单击名称空间
},
....
}
};
$(文档).ready(函数(){
for(第1页中的var键。事件){
for(第1页中的var eventKey.Events[key]){
$(Page1.Events[key][eventKey].selector).bind(key,Page1.Events[key][eventKey].func);
}
}
});
现在,这样做的好处是,只需将事件添加到名称空间中,它们就会自动连接到文档就绪状态。您还可以使用Live或delegate替换$.bind调用,以连接到未来的dom元素
我不喜欢在用jQuery方法阅读html时,没有任何关于链接作用的线索
禁用JavaScript的浏览器也不知道你的链接在做什么。他们看到一个指向文档顶部的链接
其他答案已经为您提供了许多避免HTML中单击
样式事件的理由…我也尽最大努力避免HTML中的
链接,确保文档中的任何
标记都有其用途。我通常会使用jQuery创建额外的
标记,以添加功能,只有在浏览器将允许我处理它们上的单击事件“当使用jQuery方法读取html时,对于链接的作用没有任何线索。”你可以随时使用注释,或者更好地使用描述性Id和类。myLink
没有说太多,但是helloLink
明白了这一点。写这篇文章后不久,当我注意到我链接的Id与它调用的函数的名称完全相同时,我实际上意识到了这一点:)