复杂 data() 附加到 HTML 元素
complex data() attachment to HTML element
我只是浏览了模态中的代码.js我遇到了以下行,我遇到了困难,下面是一行,我遇到了困难:
if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
你也可以在github上找到这一行:第289行。
现在,很明显,上面的行是将data()附加到HTML元素,我的问题是我发现很难可视化它是如何做到这一点的:
具体来说,我的问题是传递给 data() 方法的第一个参数,现在 Jquery 文档清楚地表明第一个参数是key
,第二个参数是value
,也就是说,如果执行以下行:
if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
HTML 元素上构造的数据会是什么样子?
bs.modal : {
this.options = options
this.$body = $(document.body)
this.$element = $(element)
this.$dialog = this.$element.find('.modal-dialog')
this.$backdrop = null
this.isShown = null
this.originalBodyPad = null
this.scrollbarWidth = 0
this.ignoreBackdropClick = false
}
像上面这样的东西?我真的很困惑最终结果会是什么样子,有人真的可以澄清一下,bs.modal
作为第一个参数的用法吗?
我这样做是为了检查最终产品的外观:
1 console.log($this.data('bs.modal'));
2 if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
3 console.log($this.data('bs.modal'));
我得到以下结果:
line:1 undefined
line:3 Object { options: Object, $body: Object, $element: Object, isShown: null, $backdrop: null, scrollbarWidth: 0 }
但我在任何地方都看不到bs.modal
。
我真的很感激任何帮助。
谢谢。
代码行分解如下:
if (!data)
如果data
变量为 null
、 undefined
或空字符串,则此条件将命中。
$this.data('bs.modal', ...)
这是 jQuerys data()
方法的设置器。
data = new Modal(this, options)
这是将data
变量设置为等于一个新的Modal
对象。因为它位于data()
变量的 setter 内部,所以它也在设置bs.modal
数据值。它等效于此代码:
var x = a = 'foo';
console.log(x); // = 'foo'
console.log(a); // = 'foo'
在最后一个示例的控制台输出中看不到bs.modal
的原因是因为它是对象的键,并且您正在显示值。
- 如何设置html元素填充的动画
- 删除对HTML元素的拖动
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 如何使用JQuery在Javascript中转换字符串中的HTML元素
- 一个html元素的克隆次数太多
- 使用AngularJS Directive WHITOUT$scope创建一个动态html元素
- 为什么我在Internet Explorer上看不到html元素
- 重新排列HTML元素的顺序并更改内容
- 使用.on动态添加jquery/js不知道的html元素
- 如果类不是一个选项,如何在使用 jQuery 时控制(避免)嵌套 html 元素的样式
- 如何将html元素添加到tampermonkey中
- 访问html元素值javascript
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- 自定义HTML元素属性未显示-Web组件
- 让HTML元素充当停止滚动的锚点
- 将html元素插入到文本字符串中,以匹配另一个html字符串
- 替换HTML元素中的字符
- 如何将html元素添加为生成的内容
- 如何使用JavaScript在没有html dom的情况下隐藏html元素
- 使用JS加载HTML元素