3

我正在尝试使用以下代码来引用集中在我的 contenteditable div 中的任何内容,其 id 为rt

var lastfocused;
$("#rt *").focus(function () {
  lastfocused = $(this);
});

出于某种原因, lastfocused 始终等于$("#rt");,但绝不是可能在 contenteditable div 内的任何其他内容。我如何才能使内容可编辑 div 中的所有内容都存储在lastfocused变量中?

4

2 回答 2

2

看起来你的问题在其他地方。上面的代码非常适合我:

http://jsfiddle.net/8hZWq/

编辑

如果子元素不是您所说的输入,而是 div - focus() 方法不适用于它们,因为它仅适用于输入、文本区域、选择等。

您还可以使用 .click() 而不是 focus() 来存储对最后单击元素的引用。但请记住,它还取决于元素的结构。

例如,如果您在子 div 中有多个级别的容器,则#ID *选择器实际上会从 #ID 开始多次触发每个级别的子级。

如果您希望仅存储对 #ID 的第一级子级的引用,则应使用#ID > *选择器仅引用直接子级。

如果您只想存储对被点击的元素的引用,而不管它与容器相关的级别,您应该使用点击事件目标引用:

var clicked;
$('#ID').click(function(event){
   clicked = $(event.target);
});
于 2012-09-01T09:01:21.800 回答
0

事实上,你的问题是因为函数中的变量声明。设置它,在每个焦点事件中,“lastfocused”变量将被重新分配。

我来晚了,但如果我到达这里,其他人可以。

做这个:

$("#rt *").focus(function () {
   var lastfocused = $(this);
});
于 2017-06-21T07:25:40.503 回答