Как добавить класс к родительскому элементу выбранного элемента - PullRequest
0 голосов
/ 23 декабря 2010

Я хочу добавить класс в родительский элемент.

Структура dom:

<ul class="companies">
<li>
<a id=""></a>
<a id=""></a>
</li>
<li>
<a id=""></a>
<a id=""></a>
</li>
</ul>

Все идентификаторы элементов "a" автоматические.

Я хочу добавить класс к родителю "li" из выбранного "a".

Вот мой код:

$(".companies li a:selected").parent("li").addClass('selected');
selectDealer($(".companies li a:selected").attr("id"));

Но когда я нажимаю один элемент «a», его родительский «li» не будет выбран.

Кто-нибудь знает почему?

Спасибо

Ответы [ 3 ]

2 голосов
/ 23 декабря 2010

Я думаю , что вам нужно, это обработчик click здесь:

$(".companies li a").click(function() {
  $(this).parent("li").addClass('selected');
  selectDealer(this.id);
});

:selected - для selected элементов, например, <option> элементов в <select>. Если вы хотите, чтобы что-то произошло с событием, например click, используйте обработчик события, подобный описанному выше. Внутри обработчика this будет ссылаться на элемент, на котором происходит событие.

Выше приведено для иллюстрации, более эффективная версия будет использовать .delegate() следующим образом:

$(".companies").delegate("li a", "click", function() {
  $(this).parent("li").addClass('selected');
  selectDealer(this.id);
});
1 голос
/ 23 декабря 2010

Ссылка не может быть «выбрана», это относится только к элементам опций.Таким образом, ваш первоначальный селектор не работает.

0 голосов
/ 23 декабря 2010

Вы уверены, что: selected можно использовать таким образом?Без тестирования я бы сказал, что это ошибка

...