0

こんにちは、スタックオーバーフローのメンバーによって以前に解決された別の問題があります。彼らの迅速な返信と専門家に本当に感謝しています。以下は、ibox がまったく呼び出されていないことがわかった JS コードです。

(function($) {
    $.fn.ibox = function() {
        // set zoom ratio //
        alert("asdfas");
        resize = 20;
        ////////////////////
        var img = this;
        img.parent().append("<div id='ibox' />");
        var ibox = $("#ibox");
        var elX = 0;
        var elY = 0;

        img.each(function() {
            var el = $(this);

            el.mouseenter(function() {
                ibox.html("");
                var elH = el.height();
                elX = el.position().left - 6; // 6 = CSS#ibox padding+border
                elY = el.position().top - 6;
                var h = el.height();
                var w = el.width();
                var wh;
                checkwh = (h < w) ? (wh = (w / h * resize) / 2) : (wh = (w * resize / h) / 2);

                $(this).clone().prependTo(ibox);
                ibox.css({
                    top: elY + "px",
                    left: elX + "px"
                });

                ibox.stop().fadeTo(200, 1, function() {
                    $(this).animate({top: "-="+(resize/2), left:"-="+wh},400).children("img").animate({height:"+="+resize},400);
                });
            });

            ibox.mouseleave(function() {
                ibox.html("").hide();
            });
        });
    };
});

$(document).ready(function() {
    $("#clickMe").click(function () { 
    alert("Me");
    }); 

    var html = "";
    var num = 1;

    for (var idx=0; idx<100; idx++)
    {
        if( num == 4) num = 1;
        html += "<img src='image/img" + num + ".jpg' class='grayscale' />";
        num ++;
    }  
    $("#images").html(html);

   $("#images img").ibox();


});

ここで呼び出しステップを逃しますか? 助けてください。ありがとう

4

2 に答える 2

3

jQuery問題は、プラグインを囲む関数にオブジェクトを渡していないことです

(function($) {
     ....
 }); <-- Oops

これを次のように変更します。

(function($) {
     ....
 })(jQuery); <-- Yay!

プラグインのオーサリングに関する優れた記事があります: http://docs.jquery.com/Plugins/Authoring

于 2012-12-13T09:13:02.287 に答える
1

jQuery プラグインをすぐに呼び出される関数 expression内にラップしましたが、実際にはそれを呼び出すことができませんでした。

(jQuery)関数式の後に置き ます:

(function($) {
    $.fn.ibox = function() {
        ...
    }
})(jQuery);

「void」関数式から実際に呼び出される関数式に変換します。

于 2012-12-13T09:11:40.597 に答える