2010-08-18 43 views
-1

我有一个<a>标签,其中包含一个跨度。跨度有JavaScript附加,它做了一些事情。因此,点击范围时,JavaScript会运行,但<a href>会被忽略,并且不会导航到该范围。'OnClick'中断我的超链接

有没有办法让它继续正常导航?

<a href='http://www.google.com'><span>some text</span></a> 

点击事件实际上被注册的其他方式比onclick,我的问题标题有点误导。

将鼠标悬停在链接上,将URL置于状态栏中,就像您所期望的那样,只需单击它就不会执行任何操作。

这个javascript很简单return true;此刻我试图弄明白。

我怀疑javascript是在span而不是a,它一旦完成javascript就会传播给href。

恐怕我不知道它是如何绑定的,因为它是一些奇怪的第三方组件。

+3

请向我们展示你的JS。 – 2010-08-18 15:52:59

+0

请发布跨度点击处理程序的代码及其绑定方式 – 2010-08-18 15:54:11

+1

这里没有足够的信息来找出导致问题的原因。我写了一个''的快速测试(http://jsfiddle.net/3Hk4m/),在''内有一个onclick处理程序,但是这样做很好(事件触发,然后页面重定向)。 – 2010-08-18 15:59:29

回答

1

我怀疑是因为JavaScript是在跨度,而不是它一旦javascript完成后如何传播回href混淆。

是。如果您的onClick处理程序位于跨度上,则浏览器无法读取超链接的href属性。如果链接有一个ID,你可以这样做:

function onclick() 
{ 
    //Do your things... 

    var link = document.getElementbyId('your_link_id').href; 
    window.location.href = link; 
    return true; 
} 
+0

关于正确的声音,现在要弄清楚当我不知道ID时该怎么做......我可以使用'this'关键字并获取parent.href('a'标记)? – NibblyPig 2010-08-18 16:01:10

+0

我不相信这是真的。除非span上的事件处理程序以某种方式阻止点击事件冒泡,否则的默认onclick应该仍然会触发。看一个简单的例子http://jsfiddle.net/3Hk4m/。 – 2010-08-18 16:01:46

0

您的JavaScript可能返回的值是非真(值为布尔值false)。简单的解决方案是在单击链接时运行的函数/代码的末尾添加return true语句。

+0

试过这个,但没有运气 – NibblyPig 2010-08-18 15:51:59

+0

你能发布链接HTML以及运行的JavaScript(以及代码附加到链接)? – tj111 2010-08-18 15:55:40

+0

不幸的是,我不知道它是如何运行JavaScript的,当我点击它时,它是厄运的一个可怕的共享点页面,它必须以某种方式注册它。 – NibblyPig 2010-08-18 15:57:07

-2

如果您使用的是jQuery,请确保您在事件处理程序中不返回false。这将覆盖默认值。

如果不能,你可能需要明确的代码,你想你的链接到您的JS后做什么:

<a href="www.example.com" onclick="javascript:someFunction(); window.location = \"www.example.com\"">click here</a> 

这将执行一个功能,则窗口重定向到正确的位置。

+0

很遗憾,我无法编辑跨度的onclick事件,使用CMS拉动内容并自动生成内容。 – NibblyPig 2010-08-18 15:56:08

+0

哎呦downvotes ...有什么不对?是否使用onclick属性而不是将它移动到单独的JS文件?是我用javascript:伪原型? – Tim 2010-08-18 16:00:14

+0

如果您无法编辑跨度的单击事件,则可能处于受伤的世界。您可能需要通过引用获取函数,清除其单击事件的范围,并添加一个调用旧引用的新事件,然后返回true。 – sworoc 2010-08-18 16:00:29