>经验丰富的jQuery用户熟悉事件绑定,但优化它可以增强代码稳健性和可维护性。本文探讨了更有效的jQuery事件绑定的技术。 密钥改进:
选择器的数据属性:
属性而不是CSS类可将演示和交互逻辑分开。 更改CSS类不会破坏JavaScript。<https:>
<https:><li>命名函数为处理程序:<strong>用命名函数替换匿名函数可提高可读性,启用可重复性并简化测试。<ancy>>
用于精确控制的<https:> <https:>命名空间:<ancy> jQuery的名称空间功能提供了对事件绑定和解开的粒度控制,简化了清理,尤其是在插件中。<li>
<strong>
<https:><https:>>增强的选择器策略:<ance><https:>
<p>考虑一个简单的导航菜单切换:<strong>
<https:> <https:> <p>切换导航菜单<https:>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">
<code class="language-html">
<button data-hook="nav-menu-toggle"> <https:>西费城<nav data-hook="nav-menu"> <ul>
<li><a href="//m.sbmmt.com/link/29a9f8c8460e5e2be4edde557fd83712cab">驾驶室吹口哨<https:> <https:>
<li><a href="//m.sbmmt.com/link/29a9f8c8460e5e2be4edde557fd83712throne">宝座坐着<https:><https:>
<https:>
<https:><https:> <https:>
<p>而不是依靠CSS类:<https:>
<pre class="brush:php;toolbar:false"><code class="language-javascript">$('。nav-menu-toggle')。on('click',function(){
$('nav')。toggle();
});<https:><https:>
<p>>使用<code>data-hook<https:>属性的属性:<https:>
<pre class="brush:php;toolbar:false">><code class="language-javascript">$('[data-hook =“ nav-menu-toggle”]')。on('click',function(){
$('[data-hook =“ nav-menu”]')。toggle();
});<https:><https:>
<p>通过自定义的jQuery函数进一步改进它:<https:>
<pre class="brush:php;toolbar:false"><code class="language-javascript"> $。扩展({{
挂钩:函数(hookname){
返回$(`[data-hook〜 =“ $ {hookname ||'*'}”]`);
}
});
$ .hook('nav-menu-toggle')。on('click',function(){
$ .hook('nav-menu').toggle();
});<https:><https:>
<p>这个<code>hook<https:>>函数简化了选择器的用法,并允许在单个元素上使用多个空格分离的挂钩名称。<https:>
<p> <strong>避免匿名函数:<ancip>
<https:>使用命名函数增强可读性和可检验性:<p>
<https:><pre class="brush:php;toolbar:false">函数togglenavmenu(){
$ .hook('nav-menu').toggle();
}$ .hook('nav-menu-toggle')。on('click',togglenavmenu);<https:><https:>
<p> <strong>处理多个事件:<https:><https:>
<p> jQuery有效地处理多个事件:<https:>
<pre class="brush:php;toolbar:false"><code class="language-javascript"> $。钩('nav-menu-toggle')。on('click键入鼠标',trackAction); //m.sbmmt.com/link/29A9F8C8C8460E5E2BE4EDDE57FD83712HTTPS://m.sbmmt.com/link/link/29a9a9a9a9a9f8c8460e5e5e5e5e2be4ede2be4ede2be4eddefde557fd83712
$ .hook('nav-menu-toggle')。on({
“点击”:TrackClick,
“ keydown”:trackkeydown,
“鼠标”:trackmouseenter
}); //m.sbmmt.com/link/29a9f8c8460e5e2be4edde557fd83712//m.sbmmt.com/link/29a9f8c8460e5e2be4edde557fd83712 Different handlers for different events<https:><https:>
<p>> <code> off()<https:>的释放事件需要谨慎;使用名称空间可以防止意外删除无关的处理程序:<https:>
<pre class="brush:php;toolbar:false"><code class="language-javascript"> //m.sbmmt.com/link/link/29a9f8c8460e5e2be4edde57fd83712https://wwm.sbmmt.com/php.cn/php.pphp.cn/link/29a9a9a9a9f8c8460ebindiand disman
$ .hook('click-track')。on('click.analytics',trackClick);
//m.sbmmt.com/link/29a9f8c8460e5e2be4edde57fd83712Https://m.sbmmt.com/link/29a9a9a9a9af8460e5e5e5e2be4ede2be4ede2be4edde557fd83712 ungrindd83712 ungind in nuname
$ .hook('click-track')。off('click.analytics');
//m.sbmmt.com/link/29A9F8C8C8460E5E2BE4EDDE57FD83712HTTPS://m.sbmmt.com/link/29a9a9f8c8460e5e5e5e5e5e2be4ede2be4ed2be4ed2be4edde557fd83712
$('*')。off('。分析');<https:><https:>
<p><strong>结论:<ancy> <https:>
<https:>这些技术创造了更强大,可维护和可测试的jQuery事件处理代码。 名称空间对于复杂的应用程序和插件开发特别有价值。 使用<p>> data-hook<code>属性和命名函数可显着提高代码的清晰度并降低意外副作用的风险。<ancy>></ancy></code></p></https:></https:></ancy></strong></p></https:></https:></code></pre><div class="contentsignin">登录后复制</div></div></https:></https:>
以上是有效的事件与jQuery结合的详细内容。更多信息请关注PHP中文网其他相关文章!