本文介绍了替代jQuery的.toggle支持EVENTDATA()方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

.toggle()法国

时,提供了方便的.toggle()方法。这是比较容易实现通过手相同的行为,并且如果假设内置.toggle()证明限制性这可能是必要的。

内置 .toggle 的假设已经被证明限制了我目前的任务,但文档没有就如何落实相同的行为阐述。我需要EVENTDATA传递给提供给切换()的处理功能,但似乎只有 .bi​​nd()将支持这一点,不是 .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);
});

这篇关于替代jQuery的.toggle支持EVENTDATA()方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-19 04:34