为了使点击式div,我做:
blah blah
然后
$("div.clickable").click( function() { window.location = $(this).attr("url"); });
我不知道这是否是最好的方式,但除了一个问题外,它与我完美配合:如果div包含可点击的元素,例如,则用户点击超链接,调用超链接和div可点击
当锚标记引用javascript AJAX函数时,这尤其是一个问题,该函数执行AJAX函数并遵循div的'url'属性中的链接.
无论如何围绕这个?
如果从函数返回"false",它将停止事件冒泡,因此只会触发第一个事件处理程序(即,您的锚点不会看到点击).
$("div.clickable").click( function() { window.location = $(this).attr("url"); return false; });
有关return false与preventDefault的详细信息,请参阅event.preventDefault()与return false.
$("div.clickable").click(
function(event)
{
window.location = $(this).attr("url");
event.preventDefault();
});
使用自定义url属性会使HTML无效.虽然这可能不是一个大问题,但给定的例子既不可访问.不适用于键盘导航,也不适用于JavaScript关闭(或被其他脚本阻止)的情况.即使谷歌也不会找到位于指定网址的网页,至少不会通过这条路线.
尽管如此,这很容易实现.只要确保div中有一个指向url的常规链接.使用JavaScript/jQuery,您可以向div添加一个onclick,重定向到链接的href属性指定的位置.现在,当JavaScript不起作用时,链接仍然可以,并且它甚至可以在使用键盘导航时捕获焦点(并且您不需要自定义属性,因此您的HTML可以有效).
我前段时间写了一个jQuery插件.它还将classNames添加到div(或任何其他你想要点击的元素)和链接,这样当div确实可以点击时你可以用CSS改变它们的外观.它甚至添加了可用于指定悬停和焦点样式的classNames.
你需要做的就是指定你想要点击的元素并调用他们的clickable()方法:在你的情况下,这将是 $("div.clickable).clickable();
有关下载+文档,请参阅插件页面:jQuery:clickable - jLix