щелчок () или триггер («щелчок») не работает

#javascript #jquery #debugging

#javascript #jquery #отладка

Вопрос:

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

 <a href="#" id="test">click me</a>

$('#test').live('click',function(){
      alert('live click event');
});
  

Если я попытаюсь запустить его на консоли, как показано ниже. Это никогда не работает.

 $('#test').trigger('click');
  

Кто-нибудь знает, что вызывает эту проблему?

Примечание: в консоли Javascript нет ошибок.

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

1. Какую версию jQuery вы используете?

2. Ваша незакрытая ссылка href заменить: <a href id="test">click me</a> на: <a href="#" id="test">click me</a> может быть?? Смотрите: jsfiddle.net/2uLT7/1

3. Я не тестировал, но мое лучшее предположение заключается в том, что метод .trigger() не запускает событие. live фактически привязывает обработчик события к документу, а не к фактическому элементу. Я немного озадачен тем, что это не работает… Я проверю это и посмотрю, что случилось

4. У вас должна быть ошибка где-то в вашем коде … она отлично работает здесь: jsfiddle.net/6PDkd

5. FWIW, концепция live обработчика идентификатора противоречива. У вас должен быть только один и только один идентификатор на странице, и если это так, live в этом нет необходимости. Если вы знаете, что это за элемент, и он появляется только один раз, вы можете применить к нему стандартный обработчик щелчков при загрузке страницы или при ее вставке.

Ответ №1:

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

  1. Как упоминалось в комментарии ранее, у вас может быть другой тег с тем же идентификатором (я знаю, что это не так, но если другие люди прочитают это, мы могли бы помочь им, указав все мыслимые причины проблемы)

  2. На вашей странице может произойти событие, которое удаляет тег, поэтому, когда вы пытаетесь запросить его в своей консоли, тег больше не существует, в этом случае вы пытаетесь получить несуществующий объект

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

  4. Возможно, у вас проблема с именованием

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

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