0

我有一个运行良好的图像交换例程,但我刚刚注意到它在 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 不喜欢上述内容有什么明显的地方吗?

是否有更好的跨浏览器解决方案?

4

1 回答 1

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);
}
于 2013-09-23T15:20:02.437 回答