可以监控动态链接上的多次点击吗?

时间:2011-09-20 13:29:50

标签: jquery

我有一个动态的故事/链接列表,我在一个由这个脚本控制的JQuery手风琴中显示 -

$('.newsDesc').hide();
   $('.newsRow a.newsTitle ').click(function(){


           $('.newsDesc').slideUp();
           $(this).parent().next().slideDown();
           return false;
   });

点击a.newsTitle链接会显示一个包含故事的div,但一旦点击该故事仍然是“打开”,直到用户点击另一个链接。我希望脚本能够通过再次点击同一链接再次隐藏故事。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

这应该有希望做你想做的事:

$('.newsDesc').hide();
$('.newsRow a.newsTitle').click(function(){
   var newsDesc = $(this).parent().next();
   $('.newsDesc').not(newsDesc).slideUp();
   newsDesc.slideToggle();
   return false;
});

JS Fiddle Example

答案 1 :(得分:0)

您可以使用切换方法,例如切换幻灯片 请查看this link以获取文档

答案 2 :(得分:0)

最简单的方法 - 将计数器存储在DOM元素数据中。更容易,如果我们谈论二进制状态 - 我们绑定特定的类并触发该类,从而改变触发的事件。这甚至适用于更多的州,但我强烈建议停止两个。但是,例如,这个想法是

$("a.link.stateA").live("click", function() {
   //if there are two state only, it is most probably better to use toggleClass
   $(this).removeClass("stateA").addClass("stateB");
   .....
});

$("a.link.stateB").live("click", function() {
  $(this).removeClass("stateB").addClass("stateC");
  .....
});

$("a.link.stateC").live("click", function() {
  //we are back!!!
  $(this).removeClass("stateC").addClass("stateA");
  .....
});

更复杂的方法 - 写一个特殊的事件。这不太受欢迎,相当复杂,说实话,我没有勇气把它称为核心功能,几乎不会改变,但是,请检查this doc中的tripleclick事件。