Разработанный ответ для новичков в jQuery
Вы должны иметь некоторое представление о порядке, в котором происходят события в Javascript. Когда браузер видит написанный вами скрипт, он анализирует его по одной строке сверху вниз (по большей части).
Итак, когда он читает ваши селекторы CSS ( Sizzle ) в jQuery, он будет смотреть на документ в его текущем состоянии для выбранного вами селектора. Это означает, что если вы напишите $('#my-id div').addClass( 'some-class' )
, он будет искать элементы div внутри элемента с идентификатором my-id
в данный конкретный момент и добавлять к ним классы.
Если вы добавите больше div в #my-id
, они не получат никаких дополнительных классов , потому что их не было, когда браузер первоначально прочитал эту строку Javascript.
Итак, в исходном вопросе, когда спрашивающий пишет $('#ss a:active').parent().addClass('ss-active');
, браузер ищет только #ss a:active
в миллисекунду, в которую он читает эту строку.
Итак, мы должны связать события Javascript, чтобы обнаружить что-то, что может произойти в будущем
Вот почему нам приходится делать что-то вроде $('#ss a').mousedown( function ).mouseup( function )
. Потому что это сообщает jQuery и браузеру, что вы ожидаете (или listen ), чтобы произошло событие.