Иногда в моих сценариях jQuery они не работают, пока я не вложу события. Например...

$(selector).click(function(){
    //do something such as create an element
    $(selector).click(function(){
        //do something with the created element
    });
});

Это нормально? Я всегда старался избегать этого, так как это не кажется правильным способом ведения дел. Однако иногда это просто не работает, поэтому я должен.

0
Ben Shelock 4 Окт 2009 в 03:23

2 ответа

Единственный случай, когда вы должны использовать вложение, — это переназначение поведения щелчка после первоначального щелчка. Я не уверен, что вы ищете цепочку, например

$('el')
.click(function(){})
.hover(function(){})

Это полностью зависит от того, что вы делаете.

1
meder omuraliev 4 Окт 2009 в 03:26

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

Оператор jQuery, который естественным образом устанавливает событие для элементов, может устанавливать его только для элементов, существующих в данный момент. Любой элемент, который вы создаете после оператора, не будет волшебным образом получать события, которые вы установили для элементов до этого.

Итак, если вы создаете элемент в событии и хотите назначить ему событие, вы должны сделать это также в событии.

0
Guffa 4 Окт 2009 в 03:41
Возможно, стоит упомянуть использование live() и делегирование событий для определенных событий.
 – 
Russ Cam
4 Окт 2009 в 04:11