使用简单的CoffeeScript和jQuery事件时出现奇怪的问题

3

在使用通配符选择器时,事件能够正常触发,但如果使用特定的ID选择器,则会失败。

以下代码是有效的:

$("*").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中使此功能工作的某些东西?也许在CoffeeScript中,jQuery选择器的格式不同?

这是我的应用程序提供的渲染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);

3
哦,你一定是在开玩笑吧,我忘记了 $(document).ready() 那部分。正在测试。编辑:是的,那就是问题所在。我的大脑短路了。每当我涉及新领域(比如 Coffeescript)时,我总是会忘记基础知识。 - Only Bolivian Here
1个回答

2

代码是否在DOM完全加载之前被执行是可能的。尝试将其包装在文档准备好处理程序中,以便任何单击处理程序在DOM完全加载后应用。现在,它可能仅在body元素上执行,因为这是脚本执行时唯一可用的元素。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接