2017-03-16 21 views
0

我有一个使用BS3模态事件的情况,我的应用程序功能被包装在暴露的方法(揭示模块模式)的对象中。我有从BS收到的事件,我有什么指向事件对象而不是应用程序对象。 我试图jquery this context与jQuery的代理,这似乎是最好的事情,但由于某些原因,事情并没有为我工作jQuery这个上下文指向上下文中的元素

var globalAppDef = (function() { 

function modalFilters() { 
    $('#filtersMore') 
    .on('show.bs.modal', (event) => { 
     const sourceElement = $(event.relatedTarget); 
     $(sourceElement.data().filters).removeClass('hidden'); 
    }) 
    /* 
    * Transfer the proper @this of the event outside the {globalAppDef} Object 
    */ 
    .on('hidden.bs.modal', $.proxy((event) => { 
     $(this).find(".form-list-items-1").addClass('hidden'); 
     $(this).find(".form-list-items-1").addClass('hidden'); 
    }, this)); 
} 

return modalFilters: modalFilters 

} 
}); 

var globalApp = new globalAppDef(); 
globalApp.initialize(); 
$(document).ready(function() {globalApp.modalFilters()}); 

我该怎么实现的是在第二hidden.bs.modal $ this指向我的Modal,它是$('#filtersMore')元素。

回答

0

实际上它是Arrow函数的原因,它留在Object上下文中。 这样工作:

.on('hidden.bs.modal', $.proxy(function (event) { 
     $(this).find(".form-list-items-1, .form-list-items-2").addClass('hidden'); 
    }, $('#filtersMore')));