javascript - Jquery 函数处理程序复杂

标签 javascript jquery

我只是在查看button.js的源代码,发现了以下代码片段:

$(document).on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
    var $btn = $(e.target)
    if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
    Plugin.call($btn, 'toggle')
    e.preventDefault()
  })

我对 Jquery 并不陌生,但我是一个初学者,现在我了解了 on() 函数在 Jquery 中的工作原理。

我对上面这段代码的问题是,我不太明白附加到 on() 函数的事件,让我解释一下:

$(document).on('click.bs.button.data-api'

我不太明白这个事件是什么:

click.bs.button.data-api

在普通的 Jquery 代码中,我通常会看到如下内容:

$('body').on('click' , '.btn' , function(e){
     // do something
});

但是这个处理程序完全让我摆脱了困境,有人可以解释一下该代码的作者通过添加该处理程序到底实现了什么吗?

这是插件 git 存储库上的链接:Line 106

最佳答案

这是一个事件命名空间。

根据 .on() 上的 jQuery 文档:

An event name can be qualified by event namespaces that simplify removing or triggering the event. For example, "click.myPlugin.simple" defines both the myPlugin and simple namespaces for this particular click event. A click event handler attached via that string could be removed with .off("click.myPlugin") or .off("click.simple") without disturbing other click handlers attached to the elements. Namespaces are similar to CSS classes in that they are not hierarchical; only one name needs to match. Namespaces beginning with an underscore are reserved for jQuery's use.

关于javascript - Jquery 函数处理程序复杂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28504872/

相关文章:

javascript - jquery如何判断我点击的td是第一行还是最后一行,以及行索引和列索引?

jquery mobile 自定义加载消息直到关闭时才显示

javascript - meteor :设计模式:为集合的每个字段(列)创建模板助手

javascript - 如何做到当我双击 div 时,它不会选择该单词?

javascript - 如何在 React-native 的 ScrollView 中使用 flex-wrap

javascript - 如何使用 Bootstrap 使输入标签填充表格中的整个 <td>

javascript - html变化的CSS子元素选择

javascript - 让谷歌翻译插件更正和建议工作

每个 html 跨度的 Javascript 倒计时器

javascript - 此 JavaScript 文件在一个页面上运行,但在其他页面上不运行,这是为什么?