- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚浏览了 Chris Coyer 的自定义事件示例,并遇到了以下代码:
$.fn.faq = function(options) {
return this.each(function(i, el) {
var base = el,
$base = $(el);
console.log(options);
base.init = function() {
// Do initialization stuff
$base
.find("dd")
.hide()
.end()
.find("dt")
.click(function() {
var ans = $(this).next();
if (ans.is(":visible")) {
base.closeQ(ans);
} else {
base.openQ(ans);
}
})
};
base.openQ = function(ans) {
// Open panel
ans.show();
// Do callback
options.qOpen.call();
};
base.closeQ = function(ans) {
// Open panel
ans.hide();
// Do callback
options.qClose.call();
};
base.init();
});
};
$("dl").faq({
qOpen: myQuestionOpenCallback,
qClose: myQuestionCloseCallback
});
function myQuestionOpenCallback() {
alert("answer opened!");
}
function myQuestionCloseCallback() {
alert("answer closed!");
}
我指的是 Chris Coyer 的帖子:
现在我的问题是为什么在这段代码中 JavaScript call() 显然没有被用来设置 this 的值,那么为什么要使用 call 呢?这是一个好的 JS 实践吗?或者这只是作者的选择,因为如果我在下面两行代码 I.E. :
options.qOpen.call();
options.qClose.call();
如果改为
options.qOpen();
options.qClose();
我的插件仍然可以正常工作,为什么要使用 call()?
我是 JS 和 jQuery 的新手。
最佳答案
它只是防止作为回调传递给选项对象的函数修改或访问选项对象。
function myQuestionOpenCallback() {
alert("answer opened!");
console.log(this); // window
}
function myQuestionCloseCallback() {
alert("answer closed!");
console.log(this); // window
}
如果没有 .call()
,它会是这样的:
function myQuestionOpenCallback() {
alert("answer opened!");
console.log(this); // {qOpen: function, qClose: function}
}
function myQuestionCloseCallback() {
alert("answer closed!");
console.log(this); // {qOpen: function, qClose: function}
}
我认为没有理由这样做(在您的特定情况下),因为使用该插件的人已经拥有对所述选项对象的完全访问权限。
var opts = {
qOpen: myQuestionOpenCallback,
qClose: myQuestionCloseCallback
}
$("dl").faq(opts);
function myQuestionOpenCallback() {
alert("answer opened!");
console.log(opts); // {qOpen: function, qClose: function}
}
function myQuestionCloseCallback() {
alert("answer closed!");
console.log(opts); // {qOpen: function, qClose: function}
}
关于javascript - 在 Chris Coyer 的自定义事件示例中使用 call(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29175617/
我是克里斯的书中的新手,这是一个问题。 在第65页的最后一段中提到使用适当的集合类型,因为它们提供强类型。 有人可以解释一下这是什么意思,因为下面的示例看起来像我通常要做的事情,因此我试图使用更好的做
这是代码片段 xhr.onreadystatechange = function(){ if(xhr.readyState == 3){ console.log("readyState
我正在设置自定义 ListView。 下拉刷新功能直接来自 https://github.com/chrisbanes/Android-PullToRefresh ListView 显示图像,所以我创
在我的项目中,继上一个关于从github导入某个库的问题之后,我决定实现另一个库,但是在这一点上我得到了很多错误。 Importing Android Listview refresh by pull
我正在使用 Chris Banes ActionBar-PullToRefresh。我可以通过下拉布局来开始刷新 - 一切都很好。 但是我如何以编程方式强制开始刷新动画(进度动画)?或者我如何以编程方
我有一个用于自定义字体的书法库,它似乎适用于除 android Q 之外的所有版本,它会在启动时使我的应用程序崩溃。最近有其他人不得不处理同样的问题吗?这是我的崩溃报告: Caused by: and
我正在尝试使用 Chris Richards jQuery rating我发现它非常有用且易于使用,但我也需要有一半的评级,而该插件没有。有什么修改可以实现这个功能吗? 我无法使用this因为该文件使
我刚刚浏览了 Chris Coyer 的自定义事件示例,并遇到了以下代码: $.fn.faq = function(options) { return this.each(function(i
我有一个用于自定义字体的书法库,它似乎适用于除 android Q 之外的所有版本,它在启动时使我的应用程序崩溃。最近还有其他人不得不处理同样的问题吗?这是我的崩溃报告: Caused by: and
Chris Lomont 非常友好地为我们提供了使用 C# 的简洁 FFT 实现。出处可见here . RealFFT(double[] data, bool forward) 函数执行了一半,请阅读
我正在尝试更改研究人员实体用于创建配置文件的默认元数据。我按照此页面上的说明进行操作:https://wiki.duraspace.org/display/DSPACECRIS/How+to+coll
Chris Coyier 写了一个 excellent article通过将 HTML 表格结构化为列表来使 HTML 表格在移动设备上更好。我喜欢这种方法,但我处理的表格是动态的,我不能像他那样真正
我已经实现(从这里- horizontal swipe on listview )滑动手势来标记-取消标记 ListView 中的项目。我使用了 Johan Nilsson 的 pull to ref
我在我正在构建的网站上使用 Chris Coyier 的全宽 hack,但对如何让 div 具有它包含的任何内容的高度感到困惑。 通常我会通过将 overflow:auto 添加到容器中来实现这一点,
当我尝试在 ubuntu 服务器 13.04 上安装 node.js 时,我将收到以下错误消息: sudo add-apt-repository ppa:chris-lea/node.js无法访问 P
我无法理解公式, 公式中的W(window)和intensity是什么意思, 我在opencv doc中找到了这个公式 http://docs.opencv.org/trunk/doc/py_tuto
我试图在 Fragment 中包含 Chris Banes Pull 以刷新实现,但在创建 PullToRefreshListView 时出现以下错误: java.lang.NoSuchFieldEr
我一直在尝试通过 Chris Pine 的“学习编程”一书来学习 ruby。在读到第 10 章和使用的示例之前,我真的很兴奋。现在,仅这一章及其示例就完全消除了我继续阅读本书的所有兴奋。在这个例子
我看到的两个优势是redis的版本和安全性,但是,对于比较了解redis的人有什么优势吗? 最佳答案 使用 PPA 的主要优势在于,一旦推送软件更新,您就可以得到它。 至于安全性,我不会说这是 PPA
我最近在我的公司继承了一个遗留的模拟框架,它是在 2000 年代初期编写的,当时主要作者正在从 C 和 Fortran 过渡到 C++。接口(interface)/实现架构遵循 Dave Abraha
我是一名优秀的程序员,十分优秀!