Alternative to jQuery#39;s .toggle() method that supports eventData?(替代支持 eventData 的 jQuery 的 .toggle() 方法?)
问题描述
.toggle()
方法的 jQuery 文档 声明:
提供 .toggle() 方法是为了方便.手动实现相同的行为相对简单,如果 .toggle() 内置的假设被证明是有限的,这可能是必要的.
The .toggle() method is provided for convenience. It is relatively straightforward to implement the same behavior by hand, and this can be necessary if the assumptions built into .toggle() prove limiting.
.toggle
中内置的假设已证明对我当前的任务有限制,但文档并未详细说明如何实现相同的行为.我需要将 eventData
传递给提供给 toggle()
的处理函数,但似乎只有 .bind()
会支持这一点,而不是.toggle()
.
The assumptions built into .toggle
have proven limiting for my current task, but the documentation doesn't elaborate on how to implement the same behavior. I need to pass eventData
to the handler functions provided to toggle()
, but it appears that only .bind()
will support this, not .toggle()
.
我的第一个倾向是使用对单个处理函数全局的标志来存储点击状态.换句话说,而不是:
My first inclination is to use a flag that's global to a single handler function to store the click state. In other words, rather than:
$('a').toggle(function() {
alert('odd number of clicks');
}, function() {
alert('even number of clicks');
});
这样做:
var clicks = true;
$('a').click(function() {
if (clicks) {
alert('odd number of clicks');
clicks = false;
} else {
alert('even number of clicks');
clicks = true;
}
});
我没有测试过后者,但我怀疑它会起作用.这是做这种事情的最好方法,还是我错过了更好的方法?
I haven't tested the latter, but I suspect it would work. Is this the best way to do something like this, or is there a better way that I'm missing?
推荐答案
似乎是一个合理的方法......我只是建议你使用 jQuery 的 数据存储 实用程序,而不是引入一个额外的变量(如果你想跟踪一大堆链接,这可能会让人头疼).所以根据你的例子:
Seems like a reasonable way to do it... I'd just suggest that you make use of jQuery's data storage utilities rather than introducing an extra variable (which could become a headache if you wanted to keep track of a whole bunch of links). So based of your example:
$('a').click(function() {
var clicks = $(this).data('clicks');
if (clicks) {
alert('odd number of clicks');
} else {
alert('even number of clicks');
}
$(this).data("clicks", !clicks);
});
这篇关于替代支持 eventData 的 jQuery 的 .toggle() 方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:替代支持 eventData 的 jQuery 的 .toggle() 方法?
基础教程推荐
- Vue 3 – <过渡>渲染不能动画的非元素根节点 2022-01-01
- Electron 将 Node.js 和 Chromium 上下文结合起来意味着 2022-01-01
- 用于 Twitter 小部件宽度的 HTML/CSS 2022-01-01
- Chart.js 在线性图表上拖动点 2022-01-01
- 直接将值设置为滑块 2022-01-01
- 如何使用JIT在顺风css中使用布局变体? 2022-01-01
- 如何使用TypeScrip将固定承诺数组中的项设置为可选 2022-01-01
- 我可以在浏览器中与Babel一起使用ES模块,而不捆绑我的代码吗? 2022-01-01
- html表格如何通过更改悬停边框来突出显示列? 2022-01-01
- 自定义 XMLHttpRequest.prototype.open 2022-01-01