• <i id='nGSvS'><tr id='nGSvS'><dt id='nGSvS'><q id='nGSvS'><span id='nGSvS'><b id='nGSvS'><form id='nGSvS'><ins id='nGSvS'></ins><ul id='nGSvS'></ul><sub id='nGSvS'></sub></form><legend id='nGSvS'></legend><bdo id='nGSvS'><pre id='nGSvS'><center id='nGSvS'></center></pre></bdo></b><th id='nGSvS'></th></span></q></dt></tr></i><div id='nGSvS'><tfoot id='nGSvS'></tfoot><dl id='nGSvS'><fieldset id='nGSvS'></fieldset></dl></div>

    1. <legend id='nGSvS'><style id='nGSvS'><dir id='nGSvS'><q id='nGSvS'></q></dir></style></legend>
      • <bdo id='nGSvS'></bdo><ul id='nGSvS'></ul>

      <tfoot id='nGSvS'></tfoot>

      1. <small id='nGSvS'></small><noframes id='nGSvS'>

        如何在javascript(jQuery)中分配迭代数组的事件回调

        时间:2024-04-18

        <small id='7Ko2L'></small><noframes id='7Ko2L'>

        • <legend id='7Ko2L'><style id='7Ko2L'><dir id='7Ko2L'><q id='7Ko2L'></q></dir></style></legend>
            <i id='7Ko2L'><tr id='7Ko2L'><dt id='7Ko2L'><q id='7Ko2L'><span id='7Ko2L'><b id='7Ko2L'><form id='7Ko2L'><ins id='7Ko2L'></ins><ul id='7Ko2L'></ul><sub id='7Ko2L'></sub></form><legend id='7Ko2L'></legend><bdo id='7Ko2L'><pre id='7Ko2L'><center id='7Ko2L'></center></pre></bdo></b><th id='7Ko2L'></th></span></q></dt></tr></i><div id='7Ko2L'><tfoot id='7Ko2L'></tfoot><dl id='7Ko2L'><fieldset id='7Ko2L'></fieldset></dl></div>
            • <bdo id='7Ko2L'></bdo><ul id='7Ko2L'></ul>
              <tfoot id='7Ko2L'></tfoot>

                    <tbody id='7Ko2L'></tbody>
                  本文介绍了如何在javascript(jQuery)中分配迭代数组的事件回调的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我正在通过 javascript(使用 jQuery)生成一个无序列表.每个列表项必须接收自己的点击"事件监听器.但是,我无法将正确的回调附加到正确的项目.一个(剥离的)代码示例可能会让事情变得更清楚:

                  I'm generating an unordered list through javascript (using jQuery). Each listitem must receive its own event listener for the 'click'-event. However, I'm having trouble getting the right callback attached to the right item. A (stripped) code sample might clear things up a bit:

                  for(class_id in classes) {
                      callback = function() { this.selectClass(class_id) };
                      li_item = jQuery('<li></li>')
                                  .click(callback);
                  }
                  

                  实际上,本次迭代中还有更多内容,但我认为这与问题不太相关.无论如何,正在发生的事情是回调函数似乎是 referenced 而不是 stored (& 复制).最终结果?当用户点击任何列表项时,它总是会执行classeslast class_id的动作> 数组,因为它在该特定点使用存储在 callback 中的函数.

                  Actually, more is going on in this iteration, but I didn't think it was very relevant to the question. In any case, what's happening is that the callback function seems to be referenced rather than stored (& copied). End result? When a user clicks any of the list items, it will always execute the action for the last class_id in the classes array, as it uses the function stored in callback at that specific point.

                  我发现了一些肮脏的解决方法(例如在封闭的 a 元素中解析 href 属性),但我想知道是否有办法实现我的目标干净"的方式.如果我的方法很可怕,请说出来,只要你告诉我原因:-) 谢谢!

                  I found dirty workarounds (such as parsing the href attribute in an enclosed a element), but I was wondering whether there is a way to achieve my goals in a 'clean' way. If my approach is horrifying, please say so, as long as you tell me why :-) Thanks!

                  推荐答案

                  这是做你想做的更好的清洁方式.

                  This is a better cleaner way of doing what you want.

                  使用 .data() 将 class_id 信息添加到元素上.

                  Add the class_id info onto the element using .data().

                  然后使用 .live() 为所有新元素添加点击处理程序,这样可以避免 x * 点击函数.

                  Then use .live() to add a click handler to all the new elements, this avoids having x * click functions.

                  for(class_id in classes) {
                      li_item = jQuery('<li></li>').data('class_id', class_id).addClass('someClass');
                  }
                  
                  //setup click handler on new li's
                  $('li.someClass').live('click', myFunction )
                  
                  function myFunction(){
                     //get class_id
                     var classId = $(this).data('class_id');
                     //do something
                  }
                  

                  这篇关于如何在javascript(jQuery)中分配迭代数组的事件回调的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                      <tbody id='eS2ge'></tbody>

                      <tfoot id='eS2ge'></tfoot>
                      • <bdo id='eS2ge'></bdo><ul id='eS2ge'></ul>
                        <i id='eS2ge'><tr id='eS2ge'><dt id='eS2ge'><q id='eS2ge'><span id='eS2ge'><b id='eS2ge'><form id='eS2ge'><ins id='eS2ge'></ins><ul id='eS2ge'></ul><sub id='eS2ge'></sub></form><legend id='eS2ge'></legend><bdo id='eS2ge'><pre id='eS2ge'><center id='eS2ge'></center></pre></bdo></b><th id='eS2ge'></th></span></q></dt></tr></i><div id='eS2ge'><tfoot id='eS2ge'></tfoot><dl id='eS2ge'><fieldset id='eS2ge'></fieldset></dl></div>

                        <legend id='eS2ge'><style id='eS2ge'><dir id='eS2ge'><q id='eS2ge'></q></dir></style></legend>

                        <small id='eS2ge'></small><noframes id='eS2ge'>