$(this).find(‘ввод [тип = «отправить»]: нет (.отмена), кнопка’).click(функция () — что это?

#jquery #jquery-selectors

#jquery #jquery-селекторы

Вопрос:

Может кто-нибудь помочь мне понять эту строку кода jquery?:

 $(this).find('input[type="submit"]:not(.cancel), button').click(function ()
  

Меня особенно интересует .cancel , поскольку весь фрагмент кода jquery (не включенный здесь) используется для проверки страницы, и я пытаюсь предотвратить проверку, если пользователь нажимает на кнопку отмены. Я предполагаю, что в приведенной выше строке кода говорится, что нажатие кнопки отправки НЕ является кнопкой отмены, затем продолжить.

Но я не знаю, как обозначить кнопку как cancel .

Ответ №1:

В основном он ищет элементы, расположенные внутри this , которые имеют следующие требования

  1. является вводом
  2. имеет тип = отправить
  3. не имеет класса cancel

или

  1. является кнопкой

Ответ №2:

Хорошие ответы здесь. Возможно, эта аннотированная версия добавляет некоторую ценность.

 $(this)                   // within this jQuery object
  .find('                 // find all elements
    input[type="submit"]  // that are input tags of type "submit"
    :not(.cancel)         // and do not have the class "cancel"
    ,                     // or
    button                // are button elements
  ')
  .click(                 // and for each of these, to their click event
    function (){}         // bind this function
  );
  

Комментарии:

1. я хотел бы отметить два пункта в качестве ответа, поскольку это определенно ответило на мой вопрос. Но Джон ответил первым, хотя вы вдавались в подробности. Тем не менее, я дал тебе преимущество. Спасибо, что подробно рассказали о том, что вы сделали.

2. @merk, никаких проблем. Вы должны выбрать тот ответ, который лучше всего подходит для вас; я также поддержал ответ Джона. Я отвечаю на вопросы здесь не только для того, чтобы помочь, но и для того, чтобы учиться. Нет лучшего способа укрепить свое понимание даже, казалось бы, простых вещей, чем попытаться доходчиво объяснить их кому-то другому.

Ответ №3:

Они применяют класс CSS с именем cancel для обозначения кнопки отмены в основном (затем проверяют, что это кнопка без этого класса)

Хотя я не знал, что вы можете использовать звездочку ( * ) в имени класса CSS.

Неважно, это ты пытался выделить код жирным шрифтом в блоке кода

Мне также любопытно, почему они нажимают кнопку отмены типа submit, когда хотят, чтобы она все равно отменялась. (Кажется <input type="button" ... /> , это было бы лучше).

Комментарии:

1. ** Были (я предполагал) добавлены для выделения, и я удалил их, поскольку они сбивали с толку.

2. Да, можно подумать, что он будет использовать его в качестве подстановочной карточки для поиска

3. Ага, теперь понял. Он не щелкал до тех пор, пока после. Ой. ;p

4. о, извините за это — я пытался выделить его жирным шрифтом, не проверял dbl, чтобы увидеть, что текст действительно выделен жирным шрифтом. извиняюсь за путаницу

Ответ №4:

.cancel является селектором класса. В частности, он ищет input элементы с установленным атрибутом type submit , но не имеет cancel класса. Он также ищет элементы с button именем тега .

Вы можете «назначить кнопку как отмену» следующим образом:

 <input type='submit' class='cancel' />
  

Ответ №5:

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

tag .class : нет