Странная проблема с простыми событиями CoffeeScript и jQuery - PullRequest
3 голосов
/ 12 февраля 2012

Событие хорошо срабатывает на селекторе с подстановочными знаками, но происходит сбой, если я использую определенный идентификатор для селектора.

Это работает:

$("*").click ->
  console.log "entered event."
  $("#tellafriend").dialog
    modal: true
    buttons:
      Ok: ->
        $(this).dialog "close"

Тем не менее, это не:

$("#tell-a-friend").click ->
  console.log "entered event."
  $("#tellafriend").dialog
    modal: true
    buttons:
      Ok: ->
        $(this).dialog "close"

И мой соответствующий HTML:

<ul class="actions">
    <li><a href="#">Home</a></li>
    <li>|</li>
    <li><a href="#" id="tell-a-friend">Tell a Friend</a></li>
</ul>

Я что-то упустил в CoffeeScript, чтобы это работало? Может быть, селекторы jQuery отформатированы по-разному в CoffeeScript?

Это обработанный Javascript, который обслуживает мое приложение (Rails конвертирует CoffeeScript в JS при обслуживании страниц):

(function() {

  $("#tell-a-friend").click(function() {
    console.log("works");
    return $("#tellafriend").dialog({
      modal: true,
      buttons: {
        Ok: function() {
          return $(this).dialog("close");
        }
      }
    });
  });

}).call(this);

1 Ответ

2 голосов
/ 12 февраля 2012

Возможно ли, что код выполняется до полной загрузки DOM. Попробуйте обернуть его в обработчик готовых документов, чтобы любые обработчики щелчков применялись после полной загрузки DOM. Как таковой, он может выполняться только для элемента body, потому что это единственный элемент, доступный во время выполнения сценария.

...