2012-11-07 94 views
0

我有一些鏈接有事件綁定到他們和一些鏈接沒有。觸發點擊時訪問鏈接

這些鏈接的點擊事件是由選擇框中的更改觸發的。

See this fiddle

是否有jQuery的一種方式來訪問一個鏈接,如果沒有事件中綁定該鏈接?

我不想在選擇框vlaue屬性中引用url,我想引用anchor標記中的url。

像(僞代碼) -

if (link.hasEventHandler('click')){ 
    trigger click 
} else { 
    window.location = link.attr('href') 
} 

編輯 - 有,做exactley什麼,我需要在這裏做一個插件 - https://github.com/sebastien-p/jquery.hasEventListener

文件大小是一個問題,所以我想避免使用它。

我使用了最新的jQuery所以不能使用。數據(「事件」)

+4

'文件大小是一個問題,所以我想避免使用它.'它的大小<〜2.5kb。 jQuery大小約爲20倍。 – andlrc

+0

你可以使用這個插件來檢查事件監聽器:https://github.com/sebastien-p/jquery.hasEventListener – Curt

+0

THanks Null,但我繼承了一個規定了文件大小限制的項目,它已經包含了jquery。 – Finnnn

回答

0

據我所知,你不能在JS中'假'點擊。點擊事件觸發器只是觸發onClick JS事件,並不完全模擬點擊瀏覽器中的鏈接。然而,你需要做的就是使用JS獲取href並重定向到該頁面。我用幾條線更新了你的小提琴。

http://jsfiddle.net/9j8QS/1/

$('a:not(.event-bound)').click(function(event) { 
    window.location.href = $(this).attr('href'); 
}); 

選擇器選擇沒有階級event_bound所有錨標籤。

+0

喜歡橫向思維,非常感謝。 – Finnnn

0

看着你的代碼,你必須選擇與你的組合框中的選定值相同的href屬性的鏈接。例如:

$('#nav').on('change', function(event) { 
     var targetHref = $(this).find("option:selected").val(); 
     $('a[href="'+targetHref+'"]').each(function() { 
      $(this).trigger('click'); 
     }); 
}); 

假設您有鏈接的點擊事件。如果不是,只需給你的鏈接指定同一個類,然後爲該類寫一個單擊事件,將窗口位置設置爲該對象的href屬性。

相關問題