Javascript 编写干净的jQuery
考虑一下这个HTMLJavascript 编写干净的jQuery,javascript,jquery,coding-style,custom-data-attribute,Javascript,Jquery,Coding Style,Custom Data Attribute,考虑一下这个HTML <div id="container"> <ul id="someID"> <li id="someID1"> <div id="someID2"> <div class="someClass"> <label>labelText</label> </div> </div
<div id="container">
<ul id="someID">
<li id="someID1">
<div id="someID2">
<div class="someClass">
<label>labelText</label>
</div>
</div>
</li>
<li>2</li>
<li>3</li>
</ul>
</div>
-
标签文本
- 二,
- 三,
和它的剧本
<script>
$(function(){
$("#container label").click(function(){
$(this).text("labelTextChanged");
});
})
</script>
$(函数(){
$(“#容器标签”)。单击(函数(){
$(此).text(“labelTextChanged”);
});
})
让这段代码由其他人编写。现在,我想将文本labelTextChanged
更改为新的内容,如labelTextChangedThen
(这只是一个示例,有时我需要更改很多功能)。但是现在很难从DOM中找到附加的事件?在jQuery中编写代码时如何避免此类问题
仅使用属性(自定义属性)选择元素是一种好方法吗?(如在Angularjs中)
注意:实际上,它可能更好,也可能更糟。
<script>
$(function(){
$("#container").on("click","label",function(){
$(this).text("your desired text");
});
})
</script>
$(函数(){
$(“#容器”)。在(“单击”,“标签”,函数()上){
$(this.text(“您想要的文本”);
});
})
我认为为了避免使用这些tyoe代码
是一个开源Javascript bookmarklet,它提供有关附加到DOM元素的事件的调试信息
参考
$(函数(){
$(“#容器”)。在(“单击”,“标签”,函数()上){
$(this.text(“您想要的文本”);
});
})
我认为为了避免使用这些tyoe代码
是一个开源Javascript bookmarklet,它提供有关附加到DOM元素的事件的调试信息
参考您始终可以使用bookmarklet显示附加到任何DOM元素的事件侦听器。您始终可以使用bookmarklet显示附加到任何DOM元素的事件侦听器。关于第二个问题。在我看来,使用Id属性选择dom是一种很好的方法。因为对于同一级别的元素,它们不应该应用相同的Id。而类过滤器将有助于选择具有相同样式的一组元素。例如,您可以使用$('div[id=“xxx”]”使代码有意义,这意味着“id等于xxx的div”。对于第一个问题,代码不容易阅读,您可以尝试类似于$(“#container”)。find(“.someClass”)。children('label')。单击(…)。也许阅读代码仍然不容易。但是对于更复杂的代码,使用插件将帮助您使项目更可读和可维护。对于第二个问题。在我看来,使用Id属性选择dom是一个很好的方法。因为对于同一级别的元素,它们不应该应用于e相同的Id和类筛选器将有助于选择具有相同样式的一组元素。例如,您可以使用$('div[Id=“xxx”])使代码有意义,这意味着“Id等于xxx的div”。对于第一个问题,代码不容易阅读,您可以尝试类似$('#container')。查找('someClass')).children('label')。单击(…)。也许阅读代码仍然不容易。但是对于更复杂的代码,插件的使用将帮助您提高项目的可读性和可维护性。有很多方法可以编写干净的(er)代码。我更喜欢将我的处理程序方法(使用命名函数)与处理代码分开,使用数据属性进行查询和使用。例如,可以将代码重写为以下内容:
function changeLabelText(e){
var self = $(this);
self.text(self.attr('data-changeOnClick'));
}
$(document).on('click', '[data-changeOnClick]', changeLabelText);
其中
将变成
在这种情况下,稍后更改标签文本将与更改html中的datachangeonclick
属性一样简单。此外,将属性添加到html中的任何元素都很容易,这将触发click处理程序
编写单独的处理程序方法也会显示前面提到的“VisualEvent2”bookmarklet中的方法
此外,我总是在文档末尾加载脚本(就在关闭
-标记之前),以避免必须在$(function(){/*…*/})
中包装方法赋值,或者更一般地说,必须使用文档加载处理
参见此有许多方法可以编写干净(er)代码。我更喜欢将我的处理程序方法(使用命名函数)与处理代码分开,使用数据属性进行查询和使用。例如,可以将代码重写为以下内容:
function changeLabelText(e){
var self = $(this);
self.text(self.attr('data-changeOnClick'));
}
$(document).on('click', '[data-changeOnClick]', changeLabelText);
其中
将变成
在这种情况下,稍后更改标签文本将与更改html中的datachangeonclick
属性一样简单。此外,将属性添加到html中的任何元素都很容易,这将触发click处理程序
编写单独的处理程序方法也会显示前面提到的“VisualEvent2”bookmarklet中的方法
此外,我总是在文档末尾加载脚本(就在关闭
-标记之前),以避免必须在$(function(){/*…*/})
中包装方法赋值,或者更一般地说,必须使用文档加载处理
参见此您始终可以使用bookmarklet来显示附加到DOM元素的事件侦听器。那么为什么不使用angular呢?这是编写jQuery的方法。也许在上你会找到一个更好的答案。@bagonyi这是我想要的。请将此作为答案发布。你可以始终使用bookmarklet来显示附加到DOM元素的事件侦听器。那么为什么不使用angular呢?这是编写jQuery的方法。也许你会找到一个更好的答案。@bagonyi这是我要求的。请将此作为答案发布。为什么你更喜欢在上使用
,而不是直接绑定jquery单击
函数?@SubinJacob:我想是习惯吧。一个优点是使用on
附加事件,可以分配更多事件(例如“c”)