下面的Jquery代码适用于firefox,Safari,Opera,但不适用于IE。我有点知道为什么在阅读了很多关于它之后这不适用于IE,但我不知道如何解决它。 我的理解(我认为)是这个方法将在IE中分配“onclick”的属性而不是事件方法。因此它不会在IE中触发,而href会触发,而在这种情况下,它就是“#”,这正是正在发生的事情。添加onclick事件的正确方法是什么。在显示的代码下面有更多的javascript代码,但我认为它与问题无关。
<a id="product_photo_zoom_url" href="/PhotoGallery.asp?ProductCode=9857%2D116%2D003"
title="9857-116-003 Ignition box"><img id="product_photo"
src="/v/vspfiles/photos/9857-116-003-2T.jpg" border="0"
alt="9857-116-003 Ignition box" /></a> <br /><a id="product_photo_zoom_url2" href="/PhotoGallery.asp?ProductCode=9857%2D116%2D003"
title="9857-116-003 Ignition box">
<img src="/v/vspfiles/templates/100/images/buttons/btn_largerphoto.gif" border="0"></a>
var global_URL_Encode_Current_ProductCode;
var global_Config_ProductPhotosFolder;
var global_Current_ProductCode;
var titleattr = $("a#product_photo_zoom_url").attr("title");
var picurl='tb_show(titleattr, \'/PhotoDetails.asp?ShowDESC=N&ProductCode=\' + global_URL_Encode_Current_ProductCode + \'&TB_iframe=true&height=600&width=520\');return false;'
$("a#product_photo_zoom_url").attr('onclick', picurl);
$("a#product_photo_zoom_url").attr('href', '#');
$("a#product_photo_zoom_url2").attr('onclick', picurl);
$("a#product_photo_zoom_url2").attr('href', '#');
答案 0 :(得分:3)
function picurl()
{
tb_show(titleattr, '/PhotoDetails.asp?ShowDESC=N&ProductCode='
+ global_URL_Encode_Current_ProductCode
+ '&TB_iframe=true&height=600&width=520');
return false;
}
$("a#product_photo_zoom_url").click(picurl);
你可以摆脱var picurl = ...
。请注意,picurl
现在是一个函数,而不是一串代码。
答案 1 :(得分:3)
您正在使用jQuery,没有理由不使用它的跨浏览器事件处理抽象:
//...
$("a#product_photo_zoom_url").click(function () {
tb_show(titleattr, '/PhotoDetails.asp?ShowDESC=N&ProductCode=' +
global_URL_Encode_Current_ProductCode +
'&TB_iframe=true&height=600&width=520');
return false;
});
//...
请注意,我们使用的是函数,而不是字符串作为事件处理程序。
看看:
答案 2 :(得分:1)
尝试使用:
$("a#product_photo_zoom_url").click(picurl);
确保将代码包装在ready
处理程序中。它应该像:
$(function(){
$("a#product_photo_zoom_url").click(picurl});
});