A HREF 中的 JavaScript 使 jQuery 函数无法工作

Posted

技术标签:

【中文标题】A HREF 中的 JavaScript 使 jQuery 函数无法工作【英文标题】:JavaScript inside the A HREF keeps jQuery function from working 【发布时间】:2015-07-15 21:17:51 【问题描述】:

我正在使用 WordPress 插件来显示位置列表和这些位置的地图。

我创建了以下函数,以便在单击链接时链接将滚动到地图。

 jQuery(document).ready(function($) 
    $(".wpgmp_location_title h3 a").click(function() 
        $('html, body').animate(
            scrollTop: $("#map-selected").offset().top
        , 2000);
    );
);

但是,插件会自动将以下内容添加到每个链接:

href="javascript:open_current_location(marker2259map2)">

此链接会导致地图标记打开,但它似乎阻止了 jQuery 函数将页面滚动到页面顶部。

任何想法如何克服这个问题?

【问题讨论】:

哇,这是一个可怕的图书馆。 您对 HTML 有控制权吗?您可以从 HTML 中删除该功能并在滚动功能结束时调用它,以便当用户单击时,您可以滚动到正确的地图并打开当前选择的位置... 您可以遍历所有链接,将 ref 复制到变量中,剥离“javascript:”部分,删除 href,然后在 click 事件中评估变量(除非您不希望打开标记) 评估变量? :( 你试过javascript函数preventDefault();?? 【参考方案1】:

您需要取消点击处理程序中的默认事件:

jQuery(document).ready(function($) 
    $(".wpgmp_location_title h3 a").click(function(event) 
        event.preventDefault();
        $('html, body').animate(
            scrollTop: $("#map-selected").offset().top
        , 2000);
    );
); 

Fiddle

【讨论】:

不幸的是,这似乎不适用于该功能。点击链接时,网站仍然不滚动。 事实上,preventDefault 似乎让 scrollTop 在任何情况下都无法正常工作。【参考方案2】:

一种方法可能是覆盖 open_current_location() 函数。 看看this example,你也可以执行滚动然后原来的open_current_location()行为

【讨论】:

以上是关于A HREF 中的 JavaScript 使 jQuery 函数无法工作的主要内容,如果未能解决你的问题,请参考以下文章

jq hover方法用法 例子

jq点击元素删除父级

我的小前端 —— JQ和zepto

关于jq一些基本监听事件

jq获取当前浏览器大小怎么赋值给div使改变大小

JQ 简单实现手风琴