Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 编写干净的jQuery_Javascript_Jquery_Coding Style_Custom Data Attribute - Fatal编程技术网

Javascript 编写干净的jQuery

Javascript 编写干净的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

考虑一下这个HTML

<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”)