2012-11-19 3 views
1

플러그인에 대한 옵션으로 전달되는 개체의 컨텍스트에 문제가 있습니다. 나는 함수를 호출하지만 플러그인이 그 일을 할 때 'attach'컨텍스트가 변경됩니다.플러그인에 옵션을 전달할 때의 컨텍스트

$(document).ready(function() { 
    $('article > header').stickyHeader({ 
     attach: $(this).siblings('h2') 
    }); 
}); 

$.fn.stickyHeader = function(settings) { 
    // settings 
    settings = $.extend({ 
    attach: false 
    }, settings); 

    var $this = $(this); 
    var $attach = settings.attach; 
    console.log($attach); 

    // DO STUFF 

    return false; 
}; 

콘솔에 "jQuery()"가 기록됩니다. 컨텍스트가 문서 인 것 같습니다. 플러그인 내에서 올바른 컨텍스트를 얻으려면 어떻게해야합니까? 이상적으로는 "jQuery (h2)"입니다.

var $attach = $.proxy($attach, this); 

어떤 아이디어 :

주위를 파고 난 후에 나는 어떤 결과를 다음과 같이 바이올린을했다? http://jsfiddle.net/mfpYK/

답변

0

다음은 저에게 적합합니다.

$(document).ready(function() { 
    $('article > header').stickyHeader({ 
     attach: $('article > header').siblings('h2') 
    }); 
}); 

$(this) 분명히 원래 코드에서 $(document)입니다.

+0

예, 당신은 매력처럼 작동합니다. ** 그러나 ** 첨부 옵션은 실제로 헤더 객체에 다른 객체를 '부착'하므로, 예제에서는 마지막 h2 만 연결됩니다. 그래서 $ (this)를 포함하는 것이 중요합니다. – plankguy

+0

내 코드는 피들에서 실행할 때 두 개의'h2' dom 객체 배열을 제공합니다. 정확히 console.log ($ attach);를 출력 하시겠습니까? – Salman

+0

당신은 정말 옳았습니다, 그것은 고마워했습니다! – plankguy

관련 문제