2

我有一个 jQuery 对象,我正在使用.bind()方法将事件分配给该对象。但是,我还将对对象本身的引用传递给 bind 方法,如下所示:

$( document ).ready(function ()
{
    // Grab the jQuery version of the DOM element.
    var $formField1 = $( "#form-field-1" );
    // I should probably store this stuff in $formField1.data(),
    //  but not until I find out if this can cause a circular reference.
    var formFields = {
        "jQ": $formField1,
        "$comment": $( "#form-field-1-comment" ),
        "commentAnswers": [ 2, 4 ]
    };
    // Set up the comment to show when a certain answer is given.
    this.jQ.bind( "change", formFields, toggleComment );
});

function toggleComment( p_event )
{
    // Show/hide comments based on the answer in the commentAnswers array.
    if ( $.inArray($(this).val(), question.commentAnswers) > -1 )
    {
        question.$comment.parent().slideDown();
    }
    else
    {
        question.$comment.parent().slideUp();
    }
}

我想知道这是否会“事实上”导致循环引用?

4

1 回答 1

1

它不是循环引用,但它是多余的。触发事件的对象将this在事件处理程序内部可用。没有必要传入。

但是,重要的是要意识到在设置时传入的数据bind是静态的。然而,this事件处理程序内部将始终存储触发事件的特定对象。这两个对象可能相同,也可能不同,具体取决于bind应用的范围。

于 2011-08-22T19:24:49.810 回答