2012-12-14 54 views
0

我有一個手風琴只針對由類「collapseLinks」 類指定的錨元素,我試圖用:not()選擇器排除類「香草」。 「vanila」類只是我想表現正常的主角。現在,當你點擊「香草」錨時,它也會觸發手風琴。任何幫助將是偉大的!在Jquery停止發射事件的兄弟

$('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("+"); 
}); 
+1

請問您能展示您的HTML結構嗎? –

回答

0

你的第一個「點擊」處理程序是添加一個新的事件處理程序,每次它被點擊,並且這些不會覆蓋以前的處理程序。仔細想想你究竟在做什麼,並清理這種方法。根據您的描述,這裏是一個暗示:

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

自從1.6 jQuery的每一個版本,以禁止輸入元件的正確的方法是:

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

最後,你的第二個「點擊」處理程序找到'滑塊'元素(我假設所有這些元素都是<div>元素),然後嘗試過濾出'香草'元素(我認爲這些元素都是<a>元素)。另外,沒有.toggle的簽名以兩個函數作爲參數。

$("div.slider").click(function() { 
    $(this) 
     .next("div.internal") 
     .slideToggle().end() 
     .toggle(function() { 
      if ($(this).is(':visible')) { 
       $(this).children("span").text("-"); 
      } 
      else { 
       $(this).children("span").text("+"); 
      } 
     }); 
}); 
+0

嘿!感謝您的幫助,它運作良好! –

-1

你應該在處理程序中使用stopPropagation你不想傳播:http://api.jquery.com/event.stopPropagation/

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

乾杯。

+0

也許你可以真正展示如何使用OP的代碼來完成這件事。 –