2011-03-31 51 views
1

好了,所以我在jQuery的新手,有这个简单的脚本来“预览”在一个div在图像上点击2个链接jquery相关IE漏洞属性

<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'></script> 

<script type='text/javascript'> 

$(function(){ 
    $('a.classname').click(function(){ 

     var new_image_src = $(this).attr('href'); 
     var $new_image = $("<img>", { 
      src: new_image_src, 
      width: 400, 
      height: 300, 
      load: function() { 
       $('#preview').animate({'opacity': 1}, 'fast'); 
      } 
     }); 

     $('#preview').animate({'opacity': 0}, 'fast', function(){ 
      $('#preview').empty().append($new_image); 
     }); 
     return false; 
    }); 
}); 
</script> 

..... 

<a class="classname" href="images/pic1.png">link 1</a> 
<a class="classname" href="images/pic2.png">link 2</a> 

在Firefox和Opera的伟大工程。但是,IE会打开一个新窗口,点击图像路径(www.mysite.com/images/pic1.png)。

我知道这是IE的行为,而不是一个jQuery的bug ..但是有一个简单的解决方法,以适应所有浏览器?

+0

测试它$(“a.classname”)。click(function(event){ var new_image_src = $(this).attr('href'); 变量$ new_image = $( “”,{ SRC:new_image_src, 宽度:400, 高度:300, 负载:函数(){ $( '#预览')动画({ '不透明': 1},'fast'); } }); ('#preview')。animate({'opacity':0},'fast',function(){('#preview')。empty()。append($ new_image); }) ; }); – AEMLoviji 2011-03-31 14:57:05

+0

@AEMLoviji,你为什么不把它作为答案? – corroded 2011-03-31 14:57:34

+0

如果我的答案对用户有帮助,我会将其添加为答案 – AEMLoviji 2011-03-31 15:00:25

回答

1

尝试:

1-替换此行:

$('a.classname').click(function(){ 

与这一个:

$('a.classname').click(function(event){ 

2-替换此行:

return false; 

这一个:

event.preventDefault();

,让我知道,如果它的作品,我会告诉你什么是怎么回事:)

+0

不好。遗憾的是仍然有相同的行为......在Firefox和Opera中效果很好......仍然在IE中返回一个URL – 2011-04-04 13:55:43

+0

+1这是在jQuery中停止事件的正确方法。 'return false'只适用于属性事件。 – Christian 2011-04-04 14:49:48

0

测试请

$(function() { 
    $("a.classname").click(function(event) 
    { 
     event.preventDefault(); 
     var new_image_src = $(this).attr('href'); 
     var $new_image = $("<img>", { 
      src: new_image_src, 
      width: 400, 
      height: 300, 
      load: function() { 
       $('#preview').animate({'opacity': 1}, 'fast'); 
      } 
     }); 

     $('#preview').animate({'opacity': 0}, 'fast', function(){ 
      $('#preview').empty().append($new_image); 
     }); 
    }); 
    }; 

event.preventDefault() --> Description: If this method is called, the default action of the event will not be triggered.

test it here

+0

与之前相同的结果:(我所要做的只是在一个名为'preview'的div上预览一个图像。令人讨厌的是IE没有意识到这一点! – 2011-04-04 13:58:46

+0

看这里:http://jsfiddle.net/pnTM4/2 / – AEMLoviji 2011-04-04 15:13:36