2010-10-07 2 views
3

Что я ищу для jQuery, чтобы посмотреть на элемент, на который я только что нажал (например, ap или тег li), а затем применить стиль для всех экземпляры этого элемента (так что все p-теги на странице).Используйте jQuery для применения стиля ко всем экземплярам элемента с щелчком

Это мой код до сих пор, но он применяет только стиль к единственному элементу, на который был нажат.

$("article *", document.body).click(function (e) { 
    e.stopPropagation(); 
selectedElement = $(this); 
$(selectedElement).css("border", "1px dotted #333") 
}); 

Поблагодарили бы за помощь или совет!

+0

Избегайте использования подстановочного символа '*' для назначения обработчиков. Часто есть другой путь. – user113716

ответ

3
$('article *',document.body).click(
function(e){ 
    e.stopPropagation(); 
    var selectedElement = this.tagName; 
    $(selectedElement).css('border','1px dotted #333'); 
} 
); 

Demo в JS Bin, хотя я использовал универсальный селектор (так как я только отправил несколько списков (один ol а другой ul).

Над кода отредактированного в ответ на комментарий @Peter Ajtai и связанный JS Bin демо обновлялся для отражения изменения:

Почему бежать вокруг блока один раз, прежде чем смотреть на тэгу Как насчет вар selectedElement = this.tagName ;. Кроме того, это е?. stopPropagation(), поскольку вы вызываете мето д.

+0

Отлично, спасибо! –

+0

Вы очень желанны. =) –

+2

Зачем бегать по блоку один раз, прежде чем смотреть на «tagName»? Как насчет 'var selectedElement = this.tagName;'. Также это 'e.stopPropagation()', поскольку вы вызываете метод. –

2

Я не знаю, сколько элементов вложены под ваши article элементов, но это, казалось бы расточительно, чтобы добавить обработчик событий нажмите чтобы все из них с помощью *.

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

$("article", document.body).click(function (e) { 
    e.stopPropagation(); 
    $(e.target.tagName).css("border", "1px dotted #333") 
}); 

Это будет гораздо более эффективным.

+0

+1 - для эффективности –

 Смежные вопросы

  • Нет связанных вопросов^_^