2008-10-07 88 views
29

要點擊的div的,我做的:jQuery的DIV點擊,用錨

<div class="clickable" url="http://google.com"> 
    blah blah 
</div> 

然後

$("div.clickable").click(
function() 
{ 
    window.location = $(this).attr("url"); 
}); 

我不知道這是不是最好的方式,但它的工作原理與我完全一樣,除了一個問題: 如果div包含可點擊的元素,如 < a href =「...」>,並且用戶單擊超鏈接,則超鏈接和div可點擊都是稱爲

這尤其是當錨標籤指的是一個javascript AJAX功能,它執行AJAX功能遵循的div「URL」屬性的鏈接有問題。

反正這個呢?

+6

順便說一句,使用「由」屬性(即網址)將意味着,頁面將不會符合大多數文檔類型的標準...... – 2010-03-09 19:17:04

+0

請注意,HTML5允許使用`data-`前綴的自定義屬性,例如`數據url`。 – Uooo 2013-07-29 09:13:34

回答

35

如果你從你的函數返回「false」,它會停止事件冒泡,所以只有你的第一個事件處理程序會被觸發(即你的錨點不會看到點擊)。

$("div.clickable").click(
function() 
{ 
    window.location = $(this).attr("url"); 
    return false; 
}); 

查看event.preventDefault() vs. return false瞭解返回false與preventDefault的詳細信息。

8

$("div.clickable").click( function(event) { window.location = $(this).attr("url"); event.preventDefault(); });

2

我知道,如果你要改變,要一個href你會怎麼做:

 
$("a#link1").click(function(event) { 
    event.preventDefault(); 
    $('div.link1').show(); 
    //whatever else you want to do 
}); 

所以,如果你想用DIV留着吧,我會嘗試

 
$("div.clickable").click(function(event) { 
    event.preventDefault(); 
    window.location = $(this).attr("url"); 
}); 
7

使用自定義URL屬性,使HTML無效。雖然這可能不是一個大問題,但給出的例子不可訪問。不適用於鍵盤導航,也不適用於JavaScript關閉(或被其他腳本阻止)的情況。即使谷歌不會找到位於指定網址的頁面,至少不會通過此路由。

這很容易使這雖然訪問。只要確保div內有一個指向url的常規鏈接即可。使用JavaScript/jQuery,您可以將onclick添加到重定向到由鏈接的href屬性指定的位置的div。現在,當JavaScript不工作,鏈接仍然沒有和使用鍵盤導航時,它甚至可以捕捉焦點(您不需要自定義屬性,讓你的HTML可以有效)。


我前段時間寫過一個jQuery插件來做這件事。它還添加類名到div(或者你想點擊任何其他元素)和鏈接,以便你可以改變自己的容貌與CSS時股利確實是可以點擊的。它甚至添加了可用於指定懸停和焦點樣式的classNames。

所有你需要做的是指定元素(S)你想點擊並調用它們可點擊()方法:在你的情況,這將是$("div.clickable).clickable();

要下載+文檔可以看到該插件的頁面:jQuery: clickable — jLix