2015-01-16 2 views
0

В моем потоке выполнения плагина jQuery я отображаю этот список боковых панелей ссылок.Как динамически ссылаться на экземпляр jQuery?

//render method 
var render = function(self){ 

    var sidebar = ''; 
    var main = ''; 

    /* Sidebar */   
    sidebar += '<ul>' 
    sidebar += '<li><a href="javascript:self.data(activeFolder,1);self.data(render);">Rootobject 1</a></li>'; 

} 

Только я не хочу, чтобы ссылка на печать self, но я хочу ссылку на объект, на который ссылается сам вместо этого.

------------- ОБНОВЛЕНИЕ ------------

Я попытаюсь объяснить мою проблему по-другому.

Если бы я работал с этим плагином из тела страницы, я мог бы легко хранить ссылку на него на INIT

var myPlugin = $('.some-element').myPlugin(); 

, а затем сделать это:

<a href="javascript:myPlugin.render();">Rootobject 1</a> 

Теперь, Я хочу, чтобы мой плагин подготовил ту же самую ссылку, так как я могу написать refrence изнутри плагина, чтобы заменить myPlugin var в этом примере выше?

ответ

0

Вы можете легко сделать это, следуя лучшей практике удаления навязчивого javascript в любом случае.

Вы можете настроить обработчик делегата, поэтому обработка событий не привязана к определенному элементу. Просто настройте обработчик на элементе body, который никогда не будет добавлен или удален. Нажмите события, в конечном счете пузыриться к телу, а затем передать в селекторе, так что вы просто обратить внимание на клики, которые отвечают вашим критериям, как это:

$("body").on('click', ".sidebar a", function() { 
    $(this).data(activeFolder, 1) 
     .data(render); 
}); 
+0

Но дело в том, чтобы написать ссылку на ссылку динамически, в случае есть несколько экземпляров плагина одновременно. Кроме того, если я добавлю обработчик, как вы предлагаете, каждый раз, когда список на боковой панели обновляется (этим методом визуализации), этот обработчик должен быть переназначен. –

+0

@MattiasSvensson, то вы можете использовать [делегирование событий] (http://learn.jquery.com/events/event-delegation/) – KyleMit

+0

И для решения проблемы с несколькими экземплярами мне, вероятно, придется заменить ваш «.sidebar a "выше с" #myInstanceElementsId .sidebar a "правильно? –