2014-11-17 2 views
1

Элемент не добавляется динамически, но css динамически применяется с помощью метода css() jQuery. И до сегодняшнего дня я использовал метод делегирования событий только для тех элементов, которые динамически добавляются не для тех элементов, которые css-свойства и значения применяются динамически, то есть через некоторые скрипты.Мне действительно нужен метод делегирования событий для метода css?

И следующий не работает для меня:

$(window).on('resize',function(){ 
    el.css({.....}); 
    someMethod(el); 
}).resize(); 

И я уверен, что для тех элементов, которые CSS применяется с помощью Jquery не нужно идти с методом делегирования событий.

Но после того, как изо всех сил много следующий метод работал отлично:

$(window.parent).on('resize',window,function(){ 
    el.css({.....}); 
    someMethod(el); 
}).resize(); 

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

Update:

В соответствии с @ jfriend00 ответ, я пришел, чтобы узнать, основная причина была из-за точки нет. 3 (событие применяется для нескольких детей с одним родителем).

Но опять же без использования методы делегирования событий следующего метод работал:

$(window).on('resize',function(){ 
    el.css({.....}); 
    someMethod(el); 
}).resize();//even if resize() is removed from here won't work 
$(window).trigger('resize');//even it is removed from here won't work 

То есть как изменение размера не требуется. Почему это так?

ответ

0

Я не вижу причин, по которым вам понадобится делегирование событий с объектом window или получить что-либо с ним.

делегация событие полезна в следующих случаях: объекты

  1. DOM-вы хотите предназначаться еще нет, так что вы можете ориентировать родитель, который присутствует и когда событие достигнет родитель, код может проверьте, совпадает ли исходный объект с селектором. Это позволяет обработчикам событий (для некоторых событий) работать с объектами, которые еще не созданы.

  2. Объекты DOM, которые вы хотите настроить, заменяются через некоторое время после установки обработчиков событий. Это приводит к той же проблеме, что и пункт 1 выше, где вновь созданные объекты не существовали во время установки обработчиков событий.

  3. Когда более эффективным является применение одного обработчика событий к общему родительскому элементу, который затем может обслуживать множество дочерних объектов, все из одного обработчика события.

Я не вижу причин, почему любой из этих методов применим к вашим обстоятельствам. Вы слушаете только событие resize на объекте window, а объект window существует во время установки обработчиков событий и не заменяется, и вы не пытаетесь одновременно обслуживать множество дочерних объектов.

+0

спасибо. Основная причина заключалась в том, что нет. 3. –

+0

@ Bhojendra-C-LinkNepal. Но вы не используете селектор в качестве второго аргумента для '.on()', поэтому вы не используете несколько окон. – jfriend00

+0

Пожалуйста, проверьте обновленный вопрос один раз. –

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