【问题标题】:jQuery Click event not fireingjQuery Click 事件未触发
【发布时间】:2012-08-03 15:38:48
【问题描述】:

简而言之,我有一个点击事件,但它似乎没有触发。正在加载 jQuery,这就是我为 jQuery 所拥有的:

<script type="text/javascript">
(function($) {
    $(".ajaxForm").click(function() {
        console.log('click');
    });
});
</script>

还有 HTML

<div class="right">
<span class="ajaxForm" type="ajax"><span>Get Quote</span></span>
</div>

这可能只是我很愚蠢,这是漫长的一天。有什么明显的错误吗?我已经检查,双重检查和三次检查选择器。

【问题讨论】:

  • 您是否 100% 确定您的 $('.ajaxForm') 选择器?如果您使用 Firebug 或 Chrome 控制台并运行它,它实际上会返回您期望的页面上的元素吗?您可以从页面发布 HTML 标记吗?至少是表单部分。编辑:我刚刚意识到你说你双重/三重检查了选择器。无论如何,标记会很有帮助。
  • 你试过了吗 alert('click'); ?
  • 您的代码创建了一个永远不会被调用的函数。
  • @Gromer - 我确定选择器是正确的。刚刚也发布了相应的 HTML。当我在 Firefox 中检查元素时,我也可以看到该类。
  • 你可以试试 alert('click');正如 bobek 所说或 $(".ajaxForm").hide() 或其他东西,而不是单击以查看您正在进入 document.ready 函数

标签: jquery


【解决方案1】:

function($) 不正确。试试 $(function(){});

http://api.jquery.com/ready/

【讨论】:

  • 这是正确的,但它不是 TS 想要的自调用函数。如果你有多个框架,你可以使用它,并且你想在你的 jQuery 代码中使用 $ 函数......
【解决方案2】:

这样的事情应该可以工作:

<script type="text/javascript">
$(document).ready(function() {
    $(".ajaxForm").click(function() {
        console.log('click');
    });
});
</script>

【讨论】:

    【解决方案3】:

    您创建了匿名函数,但忘记调用它(自调用函数)。在这种情况下,您将不得不使用 jQuery 对象作为参数直接调用它。代码:

    <script type="text/javascript">
    (function($) {
        $(".ajaxForm").click(function() {
            console.log('click');
        });
    })(jQuery);
    </script>
    

    显然,这个函数必须在加载 DOM 之后或在 .ajaxForm 元素之后调用(否则他将找不到要附加事件的元素,并且事件不会附加到您想要的元素)。

    如果你想在 HEAD(或另一个 JavaScript 文件)中使用这个函数,你必须这样做:

    (function($) {
        $(document).ready(function() {
            $(".ajaxForm").click(function() {
                console.log("click");
            });
        });
    })(jQuery)
    

    【讨论】:

    • 谢谢!当场,我是如何错过的,我不知道......可能是因为整天在屏幕前盯着各种语言。
    【解决方案4】:

    试试:

    $(function(){
        $(".ajaxForm").click(function() {
            console.log('click');
        });
    });
    

    请注意与第一行代码的语法差异。

    【讨论】:

    • 感谢您的回复,但仍然没有变化。
    【解决方案5】:

    只是为了在工作中扔一把扳手......

    $(".ajaxForm").on('click',function() {
        console.log('click');
    });
    

    On(类似于 live)实际上是 faster 然后是 .click() 并且不需要 DOM 准备好

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多