gpt4 book ai didi

javascript - 使用命名空间时 jQuery bind() 的行为

转载 作者:行者123 更新时间:2023-12-04 17:04:25 25 4
gpt4 key购买 nike

目前我正在处理 javascript 中的命名空间。作为第一步,我构建了一个测试页面。

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Namespace</title>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
var NSVB = NSVB || {};
NSVB.sub = {
init: function(){
alert("NSVB rocks");
$("#click-test").bind("click",NSVB.sub.clicktest());
},
clicktest: function(){
alert("clicked");
}
}

NSVB.sub.init = function(){
alert("NSVB rocks overwirtten");
$("#click-test").bind("click",NSVB.sub.clicktest());
}

$(document).bind("load", NSVB.sub.init());
</script>
</head>
<body>
<p id="click-test">click to test</p>
</body>
</html>

我希望我的代码做的是:
  • 使用函数 init() 和 clicktest() 定义命名空间
  • 覆盖函数 init()
  • 当我单击它时处理 #click-test 上的单击事件

  • 我的代码做什么:
  • 使用函数 init() 和 clicktest() 定义命名空间
  • 覆盖函数 init()
  • 调用 clicktest()
  • 当我点击什么都没有发生!!

  • 我真的不明白!希望有人能帮忙。

    提前致谢。

    编辑

    经过一些测试,我做了以下工作:

    删除括号
    $("#click-test").bind("click",NSVB.sub.clicktest);

    代替
    $(document).bind("load", NSVB.sub.init);

    使用(其中之一,您更喜欢使用的)
    document.addEventListener("DOMContentLoaded",NSVB.sub.init,false);

    或者
    $(document).ready(function(e) {
    NSVB.sub.init();
    });

    一切正常,符合预期!

    最佳答案

    你没有绑定(bind)函数而是函数的结果,那没什么。

    改变

    $(document).bind("load", NSVB.sub.init());


    $(document).bind("load", NSVB.sub.init);

    你在其他地方也有同样的问题(当然,如果 NSVB.puzzle.clicktest() 返回一个函数):
        $("#click-test").bind("click",NSVB.puzzle.clicktest());

    关于javascript - 使用命名空间时 jQuery bind() 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17442845/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com