图像交换在Safari中无效

时间:2013-09-23 14:57:36

标签: jquery safari

我有一个很好用的图像交换例程,但我注意到它在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解决方案?

1 个答案:

答案 0 :(得分:1)

正如Gareth Luckett正确指出的那样,你不应该在事件处理程序中定义方法。正如Anton所指出的,你应该在一个加载的处理程序中使用它(下面的现代版本)。 JSFiddle为您添加了这个,因此您需要自己添加它。

尝试在处理程序之外声明它(作为全局函数)

http://jsfiddle.net/TrueBlueAussie/yb9NJ/2/

$(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);
}