猿问

替代支持eventData的jQuery .toggle()方法?

在jQuery文档的.toggle()方法规定:


为方便起见,提供了.toggle()方法。手动实现相同的行为是相对直接的,如果内置于.toggle()的假设证明是限制性的,则可能有必要。


.toggle事实证明,内置的假设限制了我当前的工作,但是文档并未详细说明如何实现相同的行为。我需要将eventData传递给提供给的处理函数toggle(),但似乎仅.bind()支持此功能,而不支持.toggle()。


我的第一个倾向是使用单个处理程序函数全局的标记来存储单击状态。换句话说,而不是:


$('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;

  }

});

我尚未测试后者,但我怀疑它会起作用。这是做这样的事情的最好方法,还是我想念的更好的方法?


谢谢!


慕运维8079593
浏览 385回答 2
2回答

holdtom

似乎是一种合理的方式...我只是建议您使用jQuery的数据存储实用程序,而不要引入额外的变量(如果您想跟踪一大堆链接,这可能会让人头疼) 。因此,根据您的示例:$('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);});
随时随地看视频慕课网APP
我要回答