#internet-explorer #jquery-plugins
#internet-explorer #jquery-плагины
Вопрос:
Я кодирую плагин для jQuery, который теперь отлично работает в любом браузере, кроме IE. Это часть кода:
(function( $ ){
$.fn.myPlugin = function(options) {
var methods = {
getFirstList: function(el){
return $("ul:first", el);
}
};
return this.each(function(){
...
var list = methods.getFirstList(this);
// "this" here refers to window or document in IE.
...
});
};
})( jQuery );
Когда я вызываю плагин ( $("#myObject").myPlugin();
), ключевое слово «this» относится не к объекту DOM, а к окну или документу.
Как мне это исправить?
Комментарии:
1. Вы уверены, что это именно тот код, который демонстрирует эту проблему?
2. Я только что добавил еще несколько строк кода, чтобы сделать его более понятным.
3. Какую точную ошибку вы получаете?
Ответ №1:
Попробуйте заменить this
на $(this)
Комментарии:
1. Да, верните это.каждая (функция(){ должна возвращать $(this).каждая (функция(){; .каждая не является функцией DOMs этого объекта.
2. @RussC: В плагине main
this
уже является объектом jQuery.3. Хорошая мысль, я пропустил этот бит, однако «this» внутри getFirstList не обязательно является объектом jQuery, не так ли?
4. @RussC: Нет, но это не обязательно должно быть (в текущем контексте).
5. Я думаю, нам нужно, чтобы Джерадо указал, каково его точное сообщение об ошибке, да, это трюизм, но если это не одна из двух строк, которые я указал, то это не его фрагмент.