0

私は以前このようなものを持っていました:

$(function() {
$(".PortfolioFade img")
    .mouseover(function() { 
                    popup('PORTFOLIO');
                    var src = $(this).attr("src").replace("images/paperclip.png", "images/paperclip-black.png");
        $(this).attr("src", src);
    })
    .mouseout(function() {
                    ;
    });
    });

そして、これを関数に変換して呼び出そうとすると、まったく機能しませんでした。画像は置き換えられませんでした。

以下は機能しなかった関数と次の呼び出しであり、なぜ機能しなかったのか途方に暮れています。

 $(document).ready(function() {
   // put all your jQuery goodness in here.
   $('body').hide().fadeIn(1000);

   //Changing Fonts
   function changeFont(element, fontFamily, fontSize)
{
    $(element).css("font-family", fontFamily);
    $(element).css("font-size", fontSize);
}
    function ImageRollover(image_element, popup_name, original, replacement)
{
    $(element)
        .mouseover(function(){
            popup(popup_name);
            var src = $(this).attr("src").replace(original,replacement);
            $(this).attr("src",src);

        })
        .mouseout(function(){
            ;
        });
}

$(function) {
   ImageRollover(".Portfolio img",'PORTFOLIO',"images/paperclip.png","images/paperclip-black.png");
});


 });
4

1 に答える 1

1

編集:申し訳ありませんが、最初に私が見るべきだったのは、ImageRollover()関数がパラメーターを宣言しているimage_elementのに、関数内で使用しているということelementでした。したがって、関数の変更内で:

$(element)
    .mouseover(function(){

に:

$(image_element)
    .mouseover(function(){

(そして私が前に言ったことを忘れてください。)

元のバージョンにはあったが、新しいバージョンにはないのは、ドキュメント対応ハンドラーです。次のように、関数の呼び出しをImageRolloverドキュメントに入れてみてください。

$(function() {
   ImageRollover(".Portfolio img",'PORTFOLIO',"images/paperclip.png","images/paperclip-black.png");
});

まだ解析されていない要素にイベントハンドラーをアタッチすることはできません。ドキュメント全体が解析されるまでドキュメントレディハンドラーは呼び出されないため、その時点でイベントハンドラーをアタッチできます。または、スクリプトを操作する要素の後のどこかに、たとえば本文の最後にスクリプトを配置することもできます。

関数宣言をドキュメントの準備ができた状態に移動する傾向がありImageRolloverます。これは、グローバルな名前空間から除外するためです(ドキュメントの準備ができた場所からのみ呼び出すと仮定します)が、これを機能させるために必要なわけではありません。

于 2012-06-12T21:32:40.567 に答える