当单击一个按钮时,将触发一个侦听器并打开一个模式,而我需要从单击的按钮中获取信息,以将其传递给在模式内部发生事件时触发的侦听器。我的JavaScript:$('li.tab').on('click', 'span.edit-tab', function() { var elem = $(this); var tabName = elem.parent().text(); tabName = tabName.replace(/\s*$/g, ''); $('#tab-name').val(tabName); $('#tab-name').on('keypress', function(elem) { var appendedSpan = ''; appendedSpan += ' <span class="edit-tab glyphicon glyphicon-pencil" '; appendedSpan += 'data-toggle="modal" data-target="#edit-tab-modal"></span>'; var newName = $(this).val() + appendedSpan; el.parent().html(newName); });});我正在尝试将触发模式的元素传递给输入的侦听器,但是无论我尝试传递什么,变量elem都是#tab-name的jQuery对象,而不是。有什么想法吗? (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 我认为您唯一需要做的就是将eventData和$popupTriggerElem保存在keypress上下文之外:$('.popupTrigger').on('click', function(popupEventData) { var $popupTriggerElem = $(this); $('#tab-name').on('keypress', function(tabEventData) { var $tabElem = $(this); //now you can use all 4 variables: console.log(popupEventData); console.log($popupTriggerElem); console.log(tabEventData); console.log($tabElem); });});这样,您可以访问:-触发点击事件的元素,-点击事件数据-触发按键事件的元素-按键事件数据JS的精妙之处在于,将保留您当前所在的任何函数/对象的每个父上下文,直到该函数/对象将从内存中删除为止。编辑:如您在@Wynand注释中看到的,此行为基于closures。 MDN docs中的更多内容。 (adsbygoogle = window.adsbygoogle || []).push({});
10-06 00:04