2015-06-26 61 views
1

得到這個代碼我有多麼忽略jQuery的手風琴點擊事件嵌套<a>

<div id="accordion"> 
    <h3>Section 1 <a href="www.google.com">Google</a> </h3> 
    <div> 
     Text... 
    </div> 
    <h3>Section 2</h3> 
    <div> 
    Text... 
    </div> 
</div> 

而一個<h3>怎麼把jQuery的手風琴 EXPAN /降級事件happans內我不能讓工作<a>標籤。

如何避免該事件,因此<a>從手風琴事件獨立工作

回答

1

我發現對我來說工作正常的解決方案。

<div id="accordion"> 
    <h3>Section 1 <a href="www.google.com" class="openLink" onclick="OpenLink(this);">Google</a> </h3> 
    <div> 
     Text... 
    </div> 
    <h3>Section 2</h3> 
    <div> 
    Text... 
    </div> 
</div> 

function OpenLink(element) 
    { 
     console.log(element.href); 
     window.location = element.href; 
     return false; 
    } 

和有另一種溶液

$('.openLink').bind('blur change click error keydown keypress keyup mousedown mouseenter mouseleave mousemove mouseout mouseover mouseup', function (event) { 
      event.stopPropagation(); 
     }); 
2

你可以發佈代碼或鏈接到你正在使用的jquery插件嗎?這聽起來像jQuery代碼正在運行的功能preventDefault()和一個標籤冒泡和擊中該事件。

,你可以在錨包裹事件像

$('#accordian').on('click', 'a', function(e) { 
    e.stopPropogation(); 
    window.location.href = this.href; 
}); 

如果添加錨標記中的元素現在有了這個代碼becareful。如果你點擊那個元素,它將不會成爲啓動事件的錨點,它將具有href屬性。

+0

使用jQuery手風琴插件帶有分鐘配置。 –

+1

試試我的代碼,它應該工作,如果它不,我可以深入瞭解。 –

+0

呃...對不起。即使這個解決方案http://cmar.me/2011/06/15/links-in-jquery-accordion-headers/也。 –

2

事件傳播,當有人點擊<a>標記時,您可以停止事件傳播。我相信這可以奏效。

$(document).on('click', '.link', function (e) {e.stopPropagation();}); 

,如果你想「鏈接」的選擇添加類鏈接<a>

<div id="accordion"> 
    <h3>Section 1 <a class="link" href="www.google.com">Google</a> </h3> 
    <div> 
    Text... 
    </div> 
    <h3>Section 2</h3> 
    <div> 
    Text... 
    </div> 
</div>