Tag: closures

Javascript Closure -Local变量嵌套函数

我试图使用在函数P中定义的变量x,其值我试图在另一个函数中设置。 它总是未定义。 我试着用我的头脑来使用闭合,但它只是让我失望了。 它不会给我一个字符串而不是一个对象。 逻辑如下。 function P(i){ var x; if(i!=null){ //this pulls the data correctly and i could see it in network tab response. var dataFromQuery=widgets.DATA.create({ url:”abc/cde”, queryTemplate :”/query”+i+ “?” }); //we query the data and set the value as per the logic. dataFromQuery.query(function(data){ if(data[0].name){ x=data[0].name; // this stays undefined , and i understand this […]

可以从ajax回调函数中查看父函数的变量吗?

function validateHistoryId(input) { $.getJSON(‘request.php’, {“action”: “historyExists”, “history_id” : input.value}, function(data) { console.log(input.value); } ); } 我从javascript函数使用jQuery ajax调用。 我尝试了上面的代码并且它可以工作,但我不知道它将来会导致任何问题。 我想知道,ajax回调函数可以看到它的父函数的变量吗? 这样做是不好的做法?

如何调用嵌套在JQuery插件中的函数?

我的目标是能够调用我的JQuery插件中的函数。 什么是正确的语法? 例如,这不起作用: Click Me (function($) { $.fn.foo = function(options) { do_stuff = function(){ console.log(“hello world!”); // works do_other_stuff = function(){ alert(“who are you?”); } } // function } // function })(jQuery); $(“body”).foo(); $(“#click_me”).click(function(){ $.fn.foo.do_stuff.do_other_stuff(); // doesn’t work });

如何使用我自己的jQuery版本与浏览器模块

(我应该事先澄清一下:我的问题是关于Javascript中的闭包和客户端模块模式。它不是关于如何使用jQuery.noConflict()。) 我有一些人们可以添加到他们网站的Javascript。 我希望我自己的代码能够访问$变量,该变量解析为特定版本的jQuery,它与页面加载的内容无关。 如果我的所有代码都在一个文件中,在我定义的闭包内,这很容易。 但我正在努力找到一种干净的方法来使用模块模式来实现这一点,我的代码在单独的闭包中。 背景 (即明显的问题不是问题) 当我的所有代码都在一个文件中时,这很容易。 我可以在我最外层的闭包中创建一个$ var并使用$ .noConflict(…)来确保外部页面保留了自己的jQuery版本。 像这样的东西: // This is easy and works as you’d expect (function() { var $; // The $ var in my local scope that the rest of my code can use. function loadMyVersionOfjQuery() { insertTheAppropriateScriptTagAndWaitForTheScriptToLoad(function() { // Set the $ in my local scope and […]

将参数传递给setTimeout的闭包

我遇到了一个问题,我的应用程序存在于iframe中,而且它是从外部域调用的。 当iframe正确加载时,IE9不会触发加载事件,所以我认为我使用setTimeout来调查页面。 无论如何,我想看看我的setTimeout通常需要什么持续时间才能完成,所以我希望能够记录setTimeout从我的回调中触发的延迟,但是我不知道如何将该上下文传递给它所以我可以记录下来。 App.readyIE9 = function() { var timings = [1,250,500,750,1000,1500,2000,3000]; for(var i = 0; i < timings.length; i++) { var func = function() { if(App.ready_loaded) return; console.log(timings[i]); App.readyCallBack(); }; setTimeout(func,timings[i]); } }; 我一直在IE9的控制台中获取LOG:undefined。 完成此任务的正确方法是什么? 谢谢

for循环中的闭包 – 循环变量作为参数的回调

我在循环中使用jQuery“GET”从服务器获取几个结果。 我想将循环索引作为固定参数包含在回调中,但它不起作用。 (我遵循了本文关于如何做的建议。) 但是,我在回调中得到的值完全不是我所期望的 – 而不是每个循环索引值,它总是等于索引的退出值。 即。 这里的代码片段为每次回调执行打印出’16’。 如何让它打印1,2,3 …(我意识到订单可能不同,那很好) 除了下面的代码,我还尝试了几种方法来指定回调函数,例如。 function(data, textStatus) { return test(data, textStatus, idx); }, ‘text’); 等等 这应该怎么样? function test(data, textStatus, siteNo) { console.log(“siteNo=” + siteNo); } function loadConfigLists() { var siteReport; // retrieve site configuration jQuery.get(“svGetSiteConfig.php”, function(data, textStatus) { // retrieve port configuration for all sites for (var idx=1; idx<=15; […]