Объединение jQuery по клику

0

Я нашел это http://jsfiddle.net/Stocki/jGbhh/

и изменилось на это:

$(document).on("click", ".slides", function () {
    $(".slide").removeClass("inside");
    $("#" + this.id + "_slide").addClass("inside");
});

$(document).on("click", ".close", function () {
    $(".slide").removeClass("inside");
});

Он работает отлично, но это не кажется правильным. Я чувствую, что это должно быть больше на клике .slides или .close затем removeClass else на click addClass.

Любая помощь будет оценена по достоинству. Это моя первая попытка, и мне очень хотелось бы понять, почему и как это работает, и как это должно быть написано, поэтому я дважды не использую $(document).

  • 0
    На самом деле это не имеет значения, jQuery будет использовать addEventListener для каждого элемента внутренне любым способом.
  • 0
    То, как у тебя это выглядит хорошо для меня, я бы ничего не изменил.
Теги:

1 ответ

3
Лучший ответ

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

$(document).on("click", ".slides,.close", function(){
  $(".slide").removeClass("inside");
  if($(this).hasClass('slides')){
     $("#"+this.id+"_slide").addClass("inside");
  }
});
  • 0
    @matt Ваше редактирование должно быть правильным способом сделать это, но использование .is () также правильно .. верно?
  • 0
    Радж: Просто опубликовал комментарий, чтобы объяснить;). is() также будет работать, но hasClass() быстрее ( jsperf.com/is-vs-hasclass )
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню