我有一个很好用的图像交换例程,但我注意到它在Safari中失败了。
$("#image1, #image2").click(function(){
switch(this.id)
{
case 'image1':
_(this.id,"../../img/answers(biggest2).png","../../img/b6a(AC)ans.png");
break;
case 'image2':
_(this.id,"../../img/suggestions2.png","../../img/b6b(AC)ans.png");
break;
}
function _(id,main, alt){
if($("#"+id).attr("src") == main) $("#"+id).attr("src", alt);
else $("#"+id).attr("src", main);
}
});
是否有一些显而易见的事情表明Mac不喜欢上述内容?
是否有更好的crossbrowser解决方案?
答案 0 :(得分:1)
正如Gareth Luckett正确指出的那样,你不应该在事件处理程序中定义方法。正如Anton所指出的,你应该在一个加载的处理程序中使用它(下面的现代版本)。 JSFiddle为您添加了这个,因此您需要自己添加它。
尝试在处理程序之外声明它(作为全局函数)
$(function(){
$("#image1, #image2").click(function () {
switch (this.id) {
case 'image1':
flipit(this.id, "http://t2.gstatic.com/images?q=tbn:ANd9GcS_pkp85ufRHC4vy0uMXMLV6TyemIQViRFEZXbbfY1tkFR9fSOX", "http://t3.gstatic.com/images?q=tbn:ANd9GcTOMTLvVtzl2kG_Oz4ODC5uvRMuHtlTNM84rj2iFiGqgq77dKJQ-Q");
break;
case 'image2':
flipit(this.id, src = "http://t2.gstatic.com/images?q=tbn:ANd9GcS_pkp85ufRHC4vy0uMXMLV6TyemIQViRFEZXbbfY1tkFR9fSOX", "http://t3.gstatic.com/images?q=tbn:ANd9GcTOMTLvVtzl2kG_Oz4ODC5uvRMuHtlTNM84rj2iFiGqgq77dKJQ-Q");
break;
}
});
});
function flipit(id, main, alt) {
if ($("#" + id).attr("src") == main) $("#" + id).attr("src", alt);
else $("#" + id).attr("src", main);
}