jQuery DIV 点击,带有锚点

Posted

技术标签:

【中文标题】jQuery DIV 点击,带有锚点【英文标题】:jQuery DIV click, with anchors 【发布时间】:2010-09-15 20:44:44 【问题描述】:

要制作可点击的 div,我会这样做:

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

然后

$("div.clickable").click(
function()

    window.location = $(this).attr("url");
);

我不知道这是否是最好的方法,但它对我很有效,除了一个问题: 如果 div 包含可点击的元素,例如 ,用户点击超链接,超链接和div的-clickable都被调用

当锚标记引用一个javascript AJAX函数时,这个问题尤其突出,该函数执行AJAX函数AND跟随div的'url'属性中的链接。

有什么办法吗?

【问题讨论】:

顺便说一句,使用“组成”属性(即 url)意味着该页面将不符合大多数 doctype 的标准... 请注意,html5 允许使用 data- 前缀的自定义属性,例如data-url. 【参考方案1】:

如果您从函数返回“false”,它将停止事件冒泡,因此只有您的第一个事件处理程序会被触发(即您的锚点不会看到点击)。

$("div.clickable").click(
function()

    window.location = $(this).attr("url");
    return false;
);

有关 return false 与 preventDefault 的详细信息,请参阅 event.preventDefault() vs. return false。

【讨论】:

使用 preventDefault(),不返回 false!【参考方案2】:

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

【讨论】:

【参考方案3】:

使用自定义 url 属性会使 HTML 无效。尽管这可能不是一个大问题,但给定的示例都无法访问。不适用于键盘导航,也不适用于 JavaScript 被关闭(或被其他脚本阻止)的情况。即使是谷歌也不会找到位于指定 url 的页面,至少不会通过这条路线。

尽管如此,让它易于访问是很容易的。只需确保 div 中有一个指向 url 的常规链接。使用 JavaScript/jQuery 向 div 添加一个 onclick,重定向到链接的 href 属性指定的位置。现在,当 JavaScript 不起作用时,链接仍然有效,甚至可以在使用键盘导航时获得焦点(并且您不需要自定义属性,因此您的 HTML 可以是有效的)。


我前段时间写了一个 jQuery 插件来做这个。它还将 classNames 添加到 div(或您希望使其可点击的任何其他元素)和链接,以便您可以在 div 确实可点击时使用 CSS 更改它们的外观。它甚至添加了可用于指定悬停和焦点样式的类名。

您需要做的就是指定要使其可点击的元素并调用它们的 clickable() 方法:在您的情况下是$("div.clickable).clickable();

有关下载+文档,请参见插件页面:jQuery: clickable — jLix

【讨论】:

【参考方案4】:

我知道,如果您要将其更改为 href,您会这样做:

$("a#link1").click(函数(事件) event.preventDefault(); $('div.link1').show(); //无论你想做什么 );

所以如果你想把它和 div 一起保存,我会尝试

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

【讨论】:

【参考方案5】:
<div class="info">
   <h2>Takvim</h2>
   <a href="item-list.php"> Click Me !</a>
</div>


$(document).delegate("div.info", "click", function() 
   window.location = $(this).find("a").attr("href");
);

【讨论】:

以上是关于jQuery DIV 点击,带有锚点的主要内容,如果未能解决你的问题,请参考以下文章

jQuery load() 帮助

悬浮动态分层导航

带有可点击对象的jQuery可拖动列表 - 防止点击拖动

单击子锚点时,如何防止触发父级的 onclick 事件?

带有多个 div 的 jquery 动画问题(同一类)

jQuery:将href推送到另一个锚点,多次并分别