0

「this」キーワードの範囲内でチェーンを使用して制御を維持する方法を誰かが知っているかどうか疑問に思っていました。.find(this).click を使用するとチェーンから抜け出します チェーンが壊れないようにする方法を知っている人はいますか

(function($) {
    $.fn.mycontrol = function() {
        $(window).resize(function() {
            alert('resize')
        }).scroll(function() {
            alert('scroll')    
        }).find(document).bind('init', function() {
            alert('scroll')
        }).ready(function() {
            $(this).trigger('init');
        }).find(this).click(function() {
            alert('click'); // $(this) loses scope here 
        });
})(jQuery);


$(document).ready(function() {
    $('#mycontrol').mycontrol()
});
4

3 に答える 3

0

あなたが探しているものを正しく理解していればthis、連鎖を開始する前に値を保存することができるはずです:

(function($) {
    $.fn.mycontrol = function() {
        var that = this;
        $(window).resize(function() {
            alert('resize')
        }).scroll(function() {
            alert('scroll')    
        }).find(document).bind('init', function() {
            alert('scroll')
        }).ready(function() {
            $(that).trigger('init');
        }).find(that).click(function() {
            alert('click'); // $(this) loses scope here 
        });
})(jQuery);
于 2012-11-17T17:33:50.530 に答える
0

連鎖は保守不可能なコードを作成します。それを別々の行に分割します。

var $window =  $(window);

$window.resize(function() 
{
    alert('resize')
});

$window.scroll(function() 
{
   alert('scroll')    
});

// etc.

次に、それを読み取ることができ、デバッガーでステップスルーでき、何も壊さずにロジックを削除および削除できます。

于 2012-11-17T17:39:46.633 に答える
0

windowオブジェクトウィンドウです。これは、HTML オブジェクトを含む window.document です。

したがって、 $(window).find(this) は jquery の空のオブジェクトを $(window).find(document) として返します。

$(document).find(this)代わりに動作します。これは と同等です$(window.document)

于 2012-11-17T17:52:47.553 に答える