【问题标题】:Determine last item clicked确定最后点击的项目
【发布时间】:2011-08-19 18:52:59
【问题描述】:

我需要从在模糊事件中 中检索导致聚焦(模糊)事件的 DOM 元素。以下代码将为我提供失去焦点的元素的 ID,而不是导致元素失去焦点的元素。这是我需要的第二个元素。

.live('blur', function(e) {
    var id = $(this).attr('id');
}

如何获取导致模糊的元素,而不是附加模糊的元素?我能想到的唯一方法是捕获 window.click 事件,然后在那里处理我需要的逻辑,但这会变得很棘手,所以我希望有一种方法可以从 blur 事件中获取 DOM 元素。

【问题讨论】:

  • 您能否向我们提供更多信息,说明您在获得导致模糊的元素后要达到的目标?可能还有其他方法可以解决问题
  • 我需要确保根据点击或未点击的内容发生某些操作 - 即:需要显示或隐藏某些元素。问题是这段代码是我讨厌弄乱的遗留代码。我可以通过处理窗口点击并将我的所有逻辑放在那里来解决这个问题,但这需要完全消除我迫切希望避免的其余代码库。除非我有某种方法可以可靠地从模糊事件本身中获取触发元素,否则我将别无选择。
  • Thomas 的链接为我提供了一个使用超时的解决方案。不是首选的解决方案,但它会暂时解决这个问题,直到我可以在 Window.click 事件中重新连接。

标签: jquery


【解决方案1】:

运行这个

$(document).click(function(e) {
    e = e || event;
    $.lastClicked = e.target || e.srcElement;
});

那么你可以在任何地方得到它

var lastClickedElement = $.lastClicked;
// ...

【讨论】:

  • 问题是虽然我可能错了,但不能保证事件何时被触发。如果我尝试从模糊事件中获取在文档点击中设置的值,那么它可能还没有被填充吗?
【解决方案2】:

有了这个:

$(document).click(function(event) {
   window.lastElementClicked = event.target;
});

干杯

【讨论】:

  • 对不起,我想补充一点,我需要从模糊处理程序中可靠地检索元素。如果我设置了上述内容,然后尝试使用代码: alert($(window.lastElementClicked).attr("id"));从模糊事件中,我得到了模糊所附加到的元素的 ID。
【解决方案3】:
$(document).click(function(event) {
    var selected_name  =  event.target.name;
    var selected_id    =  event.target.id;
    var selected_value =  event.target.value;
    // etc.
});

只是建立和澄清其他人的帖子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多