Tag: 闭包

jQuery / javaScript – click / onclick事件监听器尽管关闭但在循环内部无效

我和我的循环再次…我正在尝试在几个div运行for循环,每个div都在类“ tooltipBox ”中但具有不同的id 。 在每个div都有一个带有类“ tttFalloutOrder ”的输入文本字段。 我想在for循环中做的是在每个.tttFalloutOrder输入字段上附加一个click-event-listener。 到目前为止这是我的代码: function installListener(elementId) { $( “div#” + elementId + ” > .tttFalloutOrder” ).on(“click”, function() { alert(“clicked on ” + elementId); }); } function runSimulation() { alert(“running simulation…”); $( “#lContent h2” ).html(“Simulation in progress…”); var agents = $( “div.tooltipBox” ); var rFOs = $( “.rFO” ); var i, […]

后期绑定onclick事件

以下是我的javscript的一部分(使用jquery)。 list = [‘a’, ‘b’, ‘c’]; for(var i = 0 ; i< list.length ; i++) { $("click here”). click(function(){ foo(list[i]); }). appendTo(‘#sometag’); } function foo(val) { console.log(val); } 总是打印c,无论你点击哪个标签。 如何打印正确值??? 它似乎正在使用i = 3的最后一个值,因此总是评估oc

如何使用jQuery无冲突模式和多个脚本位置

多么糟糕的头衔。 也许有人可以为我编辑它。 这是独家新闻: 我需要在jQuery无冲突模式下工作,但我仍然想利用$快捷方式,所以我的所有函数等都在(function($){ … })(jQuery);的典型闭包中定义(function($){ … })(jQuery); 所有这些都在外部source.js文件中定义,该文件包含在我的HTML网页的顶部。 稍后,我需要添加一些内联 ,它使用我在闭包中定义的一个实用函数。 显然,我已将自己命名为一个框,无法访问该function。 这里使用的模式是什么?

jquery和javascript的关闭

我有下面的代码和javascript的关闭以及匿名函数让我头疼。 for (var i = 0, len = sites.length ; i < len ; i++) { $("#thumb"+i).click(function() { $("#shader").show(); $("#thumbInfo"+i).show(); alert("#thumbInfo"+i); }); $("#thumbInfo"+i+" .xbutton").click(function() { $("#shader").hide(); $("#thumbInfo"+i).hide(); }); } 由于关闭,我总是5(sites数组有5个元素),所以所有点击处理程序都引用相同的id。 任何解决方法?

JavaScript / jQuery下拉列表更改事件,关闭不起作用

在我的示例代码中,我有2个下拉列表(但在实际代码中,数字因为下拉列表是动态创建的而有所不同)而我想要做的是计算使用非零值选择了多少下拉列表 。 我使用闭包来跟踪具有非零选定值的下拉列表总数。 我成功地做到了这一点(参见http://jsfiddle.net/annelagang/scxNp/9/ )。 旧/工作代码 $(“select[id*=’ComboBox’]”).each( function() { $(this).change( function() { compute(this); }); }); var compute = (function () { var total = 11; var selectedDdl = []; $(“#total”).text(total); return function (ctrl) { var id = $(ctrl).attr(“id”); var ddlMeal = document.getElementById(id); var found = jQuery.inArray(id, selectedDdl); if (ddlMeal.options[ddlMeal.selectedIndex].value != 0){ if(found == -1){ total […]

jQuery:使用闭包修复点击for循环中的函数绑定

我被困在这里,任何提示都会很好。 我有一个Objects对象[]和一个divnames []数组。 我的对象上有play()和stop()等函数。 对象及其function在多种情况下进行了测试,它们正在运行。 现在我尝试迭代divnames []并将适当对象[]的动作分配给mouseover,mouseout和click。 有一个闭包问题,我修复了一个解决方案,我在StackOverflow上的另一个线程中找到了。 这样可行。 但剩下的问题是鼠标hover等操作不会分配给稍后加载的div。 他们正在处理从一开始就在页面上的对象。 这是我有的: $(function(){ for (var i=0, len=divnames.length; i<len; i++) { if(divnames[i]){ (function( ) { // anonymous function to fix closures var index = i; // also needed to fix closures $('#'+divnames[index]).on("click", function() { objects[index].play(); loadContent(divnames[index]+".php"); }); })( ); // direct function execution to fix closures […]

使用嵌套函数返回的简单闭包与闭包

var names = [“zero”, “one”, “two”, “three”, “four”, “five”, “six”, “seven”, “eight”]; var digit_name = function(n){ return names[n]; } //Execute digit_name(0) 与 var digit_name = (function() { var names = [“zero”, “one”, “two”, “three”, “four”, “five”, “six”, “seven”, “eight”]; return function(n) { return names[n]; } })(); 然后像这样执行: digit_name(2) 我知道这些都是闭包,但我也认为两者的设置方式存在一些根本区别。 有人可以指出这两种设置有多么不同(特别是考虑到两者都完成相同的工作)? 将全局变量附加到’window’与嵌套函数以模拟私有变量是我能想到的。 编辑 – 我现在很困惑是否将第一个设置视为关闭…使用chrome,我调查了两个设置.. var […]

如何在JavaScript中复制变量?

我有这个JavaScript代码: for (var idx in data) { var row = $(“”); row.click(function() { alert(idx); }); table.append(row); } 所以我正在查看一个数组,动态创建行(我创建单元格的部分被省略,因为它并不重要)。 重要的是我创建了一个包含idx变量的新函数。 但是,idx只是一个引用,因此在循环结束时,所有行都具有相同的function,并且所有行都提醒相同的值。 我现在解决这个问题的一种方法是这样做: function GetRowClickFunction(idx){ return function() { alert(idx); } } 在我调用的调用代码中 row.click(GetRowClickFunction(idx)); 这有效,但有点难看。 我想知道是否有更好的方法可以在循环中复制idx的当前值? 虽然问题本身不是特定于jQuery(它与JavaScript闭包/范围有关),但我使用jQuery,因此只有jQuery解决方案才有效。

事件绑定意味着什么?

事件绑定意味着什么? 每当我在互联网上搜索时,我总会遇到这个词,无论我试图寻找什么意思,它对我来说仍然含糊不清@ _ @前一段时间,在阅读一些关于JavaScript的博客时,我看到人们使用这个神圣的词我不能把握。

括号中的代码块在JavaScript / jQuery中意味着什么?

可能重复: 什么(function($){})(jQuery); 意思? 我已经看到了很多带有以下语法的jQuery代码,但我真的不明白它的含义。 它出现在这个答案和关于代码组织的问题的答案中 。 两者都谈论命名空间,所以我猜这就是它的成就。 var foo = (function () { var someVar; function someFunc() { return true; } })(); 这是用于命名空间,它是如何工作的? 有时在最后一组括号中有一个名称(名称空间?),有时不是。 两者有什么区别?