IE忽略添加的onclick属性

时间:2010-06-17 04:20:16

标签: javascript jquery

下面的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', '#');

3 个答案:

答案 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});
});