jQuery.live可以在链接后停止浏览器吗?

时间:2011-03-07 01:56:27

标签: jquery

我正在尝试使用$()。live来增强网站,但它坚持遵循href。以下是非常接近实际代码(a.class,span in a)。

<a class="test" href="http://google.com"><span>test</span></a>

$('a.test').live('click', function(event){
    event.preventDefault();
    $(this).text('clicked');
});

jsfiddle works中进行测试,但在我的项目中使用时却没有。处理程序被触发,但也遵循href。 我已经尝试了返回false和event.preventDefault(),结果相同。

尽我所能,我找不到任何会阻止我在我的网站上工作的内容。

所以我的问题是,这真的有用吗?如果有的话会导致它不会发生什么?

4 个答案:

答案 0 :(得分:2)

事实证明问题是jQuery mobile。即使使用$.mobile.ajaxEnabled = false,它也会捕获点击事件并设置location.href = $this.attr( "href" );,除非该元素具有data-ajax="false"。我可以在加载jQmobile之前绑定我的事件,或者甚至取消绑定它的事件,因为我没有使用他们的导航。

Offending code in jQuery mobile

答案 1 :(得分:0)

如果您没有将href标签用作链接,请不要将href标签放在那里。

如果要控制链接何时被跟踪,可以从链接中删除href并将window.location放在live()函数中,这样您就可以在实际跟踪链接时控制。

答案 2 :(得分:0)

我假设jquery代码在

$(document).ready(function(){

   // your code here?

});

这是一个更新的jsFiddle。 http://jsfiddle.net/vG5gW/1/

现在jsFiddle可能正在运行,因为链接的DOM是在运行脚本之前加载的。

鲍勃

答案 3 :(得分:0)

我看到你在说什么,你可以做的是给链接一个id并让jquery替换href的值。如果javascript不可用,则链接将保持不变,否则链接href将更改为#或您想要的任何内容。