2013-11-18 3 views
1

Следующий $ (этот), кажется, не возвращает $ ('. Element'). Любые идеи почему?

$('.element').popover({ 
    container: $(this) 
}) 
+3

Поскольку обзорный не является правильным. Вы устанавливаете свойства объектов. – ahren

+0

[Возможно, вы должны это проверить] (http://stackoverflow.com/questions/3127429/javascript-this-keyword) – musefan

+0

Как я могу достичь того, что я пытаюсь сделать? –

ответ

2

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

$('.element').each(function() { 
    $(this).popover({ 
     container: $(this) 
    }); 
}); 

Внутри объема каждой функции, $ (это) будет относиться к конкретным $ («») элемента из списка всех элементов с этим классом.

0

В данном конкретном контексте, this будет относиться к тому, что происходит с внешней области. Это может быть объект window или некоторая содержащая функция.

Ваш код эквивалентен следующему:

var obj = {container: $(this)}; // <-- this is defined in outer scope 

$('.element').popover(obj); 
4

Это потому, что popover не является функцией события, а скорее функцией, которая применяет некоторые свойства к объекту.

Однако вы можете использовать каждый перебирать каждый элемент:

$('.element').each(function(i, obj) { 
    obj.popover({ 
     container: obj 
    }); 
}); 
Смежные вопросы