Javascript闭包在for循环中没有按预期工作

时间:2016-10-05 10:59:55

标签: javascript jquery closures

我有这个页面,我们有三个菜单

echo count($_POST[posted]);

在文档就绪时,编写以下代码

<ul class="support-menu nav navbar-nav nav_menu nav nav-pills nav-stacked full-width">
        <li class="nav_menu"><a href="#" id="manage">Manage</a></li>
        <li class="nav_menu"><a href="#" id="asset">Asset</a></li>
        <li class="nav_menu"><a href="#" id="report">Report</a></li>
</ul>

但无论我点击哪个菜单,我总是得到页面

$(function() { var actionUrlMap = { manage: "/support/manage", asset: "/support/asset", report: "/support/report" }; var loadUrl = function (url) { $("#resultDiv").load(url); }; for (var prop in actionUrlMap) { $("body").on("click", "#" + prop, function (e) { loadUrl(actionUrlMap[prop]); }); }; });

我认为问题与关闭有关,所以我将代码更改为以下

Welcome to Report Support Section

我认为现在因为我正在捕获局部变量,所以它应该加载正确的url,但点击任何菜单选项仍然会加载

for (var prop in actionUrlMap) { var localProp = prop; var localUrl = actionUrlMap[localProp]; $("body").on("click", "#" + localProp, function (e) { loadUrl(localUrl); }); };

我也试过这个

Welcome to Report Support Section

再次,认为现在我已经在局部变量中捕获了属性,它应该加载正确的URL,但它仍然在加载报告帮助部分

我在这里缺少什么?我理解整个闭包概念错了吗?或者代码中缺少其他东西?

0 个答案:

没有答案