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 が正しく指摘しているように、イベント ハンドラー内でメソッドを定義するべきではありません。アントンが指摘しているように、ロードされたハンドラーに含める必要があります (以下の最新バージョン)。これは 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 に答える