Jquery Ajax返回false,preventDefault无法正常工作

时间:2011-12-30 12:21:05

标签: jquery preventdefault

我有使用Jquery和Ajax从另一个页面加载图像的代码。

$('a').click(function(){
$('<div id="smiley">').load("ajax.html img",function(){
$(this).hide().appendTo('#new').fadeIn()}); 
return false;                   
})

然而,有两个问题:    1.我无法阻止链接在同一时间打开页面上的其他链接(即使我做了#box或类似的东西。)    2.每次单击链接时图像都会加载。我尝试返回false ,* preventDefault *但似乎没有任何效果。有什么想法吗?

由于 米罗

3 个答案:

答案 0 :(得分:0)

问题1通过将href标记的a属性设置为:href="javascript:void(0);

来解决

问题2的解决方法是向您希望拥有此行为的一个标记添加id,例如id="img_loager",然后将您的点击分配更改为:

$("#img_loader").click(function(){...

现在您将行为分配给所有a标记。返回false并防止默认只会阻止事件传播到它的目标父节点。 :)

答案 1 :(得分:0)

我们知道return falsepreventDefault()只是阻止了dom的默认行为,例如单击标记<a href="other.html">时链接到其他页面的默认行为。 但是,它无法阻止DOM事件侦听器回调,例如:

$('a').on('click', function(event){
    event.preventDefault();
    doSomething();
    return false;
});

代码可以阻止点击的dom的默认行为,但不能取消doSomething()的执行。

答案 2 :(得分:-1)

删除href属性并应用文本修饰样式

<a style="text-decoration: underline;" title="click me"></a>

这是一个相关的问题:HTML Divs show/hide issue