我有这段代码:
function Imagehover(obj,img){
jQuery("#"+obj.id).attr("src","<?php echo $this->baseurl ?>/templates/codecraft.gr/images/"+img+".png");
}
function Imageclick(obj,img){
jQuery("#"+obj.id).attr("src","<?php echo $this->baseurl ?>/templates/codecraft.gr/images/"+img+".png");
}
function Imageout(obj,img){
jQuery("#"+obj.id).attr("src","<?php echo $this->baseurl ?>/templates/codecraft.gr/images/"+img+".png");
}
<a href="<?php echo JURI::root(); ?><?php echo $langsefs->sef;?>"><img id="<?php echo $langsefs->sef;?>flag" style="height: 40px;margin-right: 10px;width: 47px;" src="<?php echo JURI::root(); ?>/templates/codecraft.gr/images/<?php echo $langsefs->sef; ?>_flag.png" onclick="Imageclick(this,'<?php echo $langsefs->sef; ?>_flag_pressed')" onmouseout="Imageout(this,'<?php echo $langsefs->sef; ?>_flag')" onmouseover="Imagehover(this,'<?php echo $langsefs->sef; ?>_flag_over')" alt="<?php echo $langsefs->sef; ?>"/></a>
但是当我点击标志时,图像消失,然后href的重定向执行到新页面。 当我删除图像的onclick事件时
function Imageclick(obj,img){
//jQuery("#"+obj.id).attr("src","<?php echo $this->baseurl ?>/templates/codecraft.gr/images/"+img+".png");
}
图像不会消失。所以我认为onclick事件会触发并尝试从服务器获取图像,但由于href也被执行,因此图像没有机会进入用户的浏览器,因为页面重定向已经开始。
如何确保将图像下载到用户的浏览器然后进行重定向,而不需要删除href属性?
答案 0 :(得分:2)
您可以使用event.preventDefault()
:
如果调用此方法,则不会触发事件的默认操作。
$('a').click(function(e){
e.preventDefault();
var href = $(this).attr('href');
$("#"+obj.id).attr("src","<?php echo $this->baseurl ?>/templates/codecraft.gr/images/"+img+".png").promise().done(function(){
window.location = href;
})
})
答案 1 :(得分:0)
从事件处理程序返回false以防止默认行为。如果您希望页面地址立即更改,则可能需要在替换图像后在每个处理程序中放置位置重定向。