我正在尝试使用$()。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(),结果相同。
尽我所能,我找不到任何会阻止我在我的网站上工作的内容。
所以我的问题是,这真的有用吗?如果有的话会导致它不会发生什么?
答案 0 :(得分:2)
事实证明问题是jQuery mobile。即使使用$.mobile.ajaxEnabled = false
,它也会捕获点击事件并设置location.href = $this.attr( "href" );
,除非该元素具有data-ajax="false"
。我可以在加载jQmobile之前绑定我的事件,或者甚至取消绑定它的事件,因为我没有使用他们的导航。
答案 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将更改为#或您想要的任何内容。