为什么在没有单击按钮的情况下加载页面时会触发我的脚本功能?

时间:2012-08-13 19:50:18

标签: javascript jquery .net events

我正在尝试使用JQuery的on()函数将事件附加到按钮以及稍后将动态创建和注入的任何按钮。但是,当我运行测试网站时,它会调用alertMe()而不单击按钮。 alertMe在.js文件中,当然,我有JQuery文件。这是一个简单的示例,我可以创建 - 我在这里错过了一些东西与JQuery附加此事件?

<body>
    <script src="Scripts/JScript.js" type="text/javascript"></script>
    <script src="Scripts/jquery.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $('button').on("click", alertMe());
        });
    </script>
    <form id="form1" runat="server">
    <div id="1">
        <button data-attr="1">
            Say Sumfin'</button>
    </div>
    </form>
</body>

data-attr只是一个自定义属性,我将用它来识别我将要附加的按钮。

修改

所以问这个问题的原因仍然很明显,我已经按原样离开了。但这就是我过去常常将事件正确附加到动态添加的元素。

$(document).on('click', '[data-attr]', alertMe);

2 个答案:

答案 0 :(得分:9)

此:

$( 'button' ).on( 'click', alertMe );

.on()方法期望函数引用作为其第二个参数。请注意区别:

alertMe // function reference

alertMe() // function invocation

答案 1 :(得分:0)

因为你在函数名后加括号!这意味着,“调用此函数”。