阻止兄弟姐妹在Jquery中发射一个事件

时间:2012-12-14 15:11:24

标签: jquery html

我的手风琴只针对“collapseLinks”类指定的锚元素 我试图用:not()选择器排除类“vanilla”。 “vanila”类只是我想要表现正常的锚。现在当你点击“香草”锚时,它也会发射手风琴。任何帮助都会很棒!

$('a.collapseLinks').click(function() {
    $("div.slider > a.collapseLinks").click(function() {
        $(this).children(".slider > a.collapseLinks").toggle();
    });

    $(this).toggleClass('collapseLinksClicked');
});

// Stuff to do as soon as the DOM is ready;
$(".internal").hide();

$("input").attr("disabled", "disabled");

$(".slider:not(.vanilla)").click(function() {
    $(this).next(".internal:not(.vanilla)").slideToggle();
}).toggle(function() {
    $(this).children("span").text("-");
}, function() {
    $(this).children("span").text("+");
});

2 个答案:

答案 0 :(得分:0)

您的第一个“点击”处理程序是添加一个新的事件处理程序,每次单击,这些都不会覆盖以前的处理程序。仔细考虑你究竟想要做什么,并清理那种方法。根据您的描述,这是一个建议:

$('a.collapseLinks').click(function() {
    $(this).next("div.slider").toggle();
    $(this).toggleClass('collapseLinksClicked');
});

在1.6版本的每个jQuery版本中,禁用输入元素的正确方法是:

$("input").prop("disabled", true);

最后,你的第二个“点击”处理程序是找到'slider'元素(我假设所有这些元素都是<div>个元素),然后尝试过滤掉'vanilla'元素(我假设是全部{ {1}}元素)。此外,.toggle没有签名将两个函数作为参数。

<a>

答案 1 :(得分:-1)

您应该在不想传播的处理程序中使用stopPropagation:http://api.jquery.com/event.stopPropagation/

$("a.vanila").click(function(event){
  event.stopPropagation();
  // do something
});  

干杯。