gpt4 book ai didi

javascript - 编写干净的 jQuery

转载 作者:行者123 更新时间:2023-11-28 12:32:51 26 4
gpt4 key购买 nike

考虑这个 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>

让这个代码由其他人编写。现在我想将文本 labelTextChanged 更改为新的内容,例如 labelTextChangedThen (这只是一个示例,有时我需要更改很多功能)。但现在从 DOM 中找到附加事件很难吗?在使用 jQuery 编写代码时如何避免此类问题?

仅使用属性(自定义属性)来选择元素是一个好方法吗? (如Angularjs)

注意:实际上,情况可能更好,也可能更糟。

最佳答案

有很多方法可以编写干净的代码。我更喜欢将处理程序方法(使用命名函数)与处理代码分开,使用数据属性来查询和使用 event delegation 。对于您的示例,代码可以重写为:

function changeLabelText(e){
var self = $(this);
self.text(self.attr('data-changeOnClick'));
}

$(document).on('click', '[data-changeOnClick]', changeLabelText);

哪里<label>将变成<label data-changeOnClick="[changed text]">

在这种情况下,稍后更改标签文本就像更改 data-changeOnClick 一样简单html 中的属性。此外,可以轻松地将属性添加到 html 中的任何元素,这都会触发点击处理程序。

编写单独的处理程序方法还会显示上述“视觉事件 2”小书签中的方法。

此外,我总是在文档末尾加载脚本(就在结束 </body> 标记之前),以避免必须将方法分配包装在 $(function() {/*...*/} ) 内。或者更一般地说必须使用文档加载处理。

查看此jsFiddle

关于javascript - 编写干净的 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20373857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com