2

だから私は JQuery プラグインの作成を開始したいと思っており、すでにコーディングを開始しています。作成方法に関する JQuery com の記事全文を読みましたが、インターネットのどこを探しても見つからない問題が発生しました。プラグインは外部スクリプトから実行する必要があり、次のように HTML ドキュメント内のスクリプトから呼び出す必要があります。

<script type="text/javascript">
$(function() {
    $("#JwebImageGallery").JwebImageGallery({
        Delay: 1000
    })
})
</script>

最初に、正常に機能するオプションから ElementID をセットアップしようとしました ('("#JwebImageGallery")' が役に立たなくなりました)。しかし、それは私が望むものではありません。'("#JwebImageGallery")' を、プラグインが操作する ElementID として使用するようにします。JQueryのWebサイトのチュートリアルでは、「this」を使用する必要があるとのことでしたが、これも私の最初の考えでしたが、機能しません。私が言ったように、外部の「.js」から実行しています。「これ」と警告すると、[ObjectHTMLDivElement] が返されます。Element は div であるため、「this」は機能しているように見えますが、機能しません。

これが私のスクリプトの一部です:

(function( $ ) {
    $.fn.JwebImageGallery=function(o){
    o=$.extend({
        BoxID: 'JwebImageGallery',
        Delay: 5500,
        TransitionEffect: 'slide'},
    o||{});

    return this.each(function() { 

        var BoxID = this;
        window.alert(BoxID);

    // Script continues here
});

  };
})( jQuery );

私も成功せずに使用しようとしました:

var BoxID = $(this);

「これ」が機能しないのはなぜですか?多くのウェブサイトで、自分が行った可能性のある障害についてチェックしましたが、それを理解することはできません.

では、それが機能しなかったことをどのように確認できますか? 私はここに私のコードを入れます:

$(BoxID).css('overflow', 'hidden');

このコードは、ElementID (BoxID) がオプションに設定されている場合は問題なく機能しましたが、「this」に変更すると機能しなくなりました... また、BoxID を「JwebDesignImageGallery」に設定すると、 ID、それは動作します。

私はJQueryが初めてなので、これが機能しない理由を知っている人がいれば、私と同じ問題を抱えている可能性のある他の人にも説明してもらえますか? さらに詳しい情報が必要な場合は、お知らせください。前もって感謝します!

注: JQuery と JQuery UI の両方を含めました

編集

取得したい ID は、次のコードの ID です。

$(function() {
        $("#JwebImageGallery").JwebImageGallery({
            Delay: 1000
        })
    })

つまり、「#JwebImageGallery」です。それが、「これ」が返ってくると思っていたものです。

4

1 に答える 1

2

あなたの混乱は何であるかから生じているようthisです。thisjQuery要素を表します。私をひっくり返したのは、コードの次の行でした。

var BoxID = this;
window.alert(BoxID);

非常に明確にするために-this渡された要素のIDではありません。彼らのオンラインドキュメントから(実際にはかなり良いです)

シェルができたので、実際のプラグインコードの記述を開始できます。しかし、その前に、文脈について一言述べたいと思います。プラグイン関数の直接のスコープでは、thisキーワードは、プラグインが呼び出されたjQueryオブジェクトを参照します。これは、jQueryがコールバックを受け入れる他のインスタンスでは、thisキーワードがネイティブDOM要素を参照するという事実による一般的なスリップアップです。これにより、開発者はこのキーワードを(再び)jQuery関数で不必要にラップすることになります。

要素のIDを渡したい場合は、使用する必要があるのは次のとおりです。

var BoxID = this.prop('id');
window.alert(BoxID);

その要素を操作したい場合

this.animate({  }); //because this is already a jQuery object

いいえ

$(this).animate({}); //like you might see in a typical jQuery callback
于 2013-01-31T16:28:46.450 に答える