使用焦点在contenteditable div内的元素?

时间:2012-09-01 08:50:30

标签: javascript jquery html contenteditable

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

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

出于某种原因,lastfocused总是等于$("#rt");,但从来没有任何其他可能在可信任的div内。我如何做到这一点,以便聚焦在contenteditable div中的任何内容都存储在lastfocused变量中?

2 个答案:

答案 0 :(得分:2)

看起来您的问题在其他地方。上面的代码对我很有用:

http://jsfiddle.net/8hZWq/

编辑

如果子元素不是你所说的输入,而是divs - focus()方法不适用于它们,因为它只适用于输入,textareas,选择等。

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

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

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

如果您希望仅将所引用的元素存储在与容器相关的级别,则应使用click事件目标引用:

var clicked;
$('#ID').click(function(event){
   clicked = $(event.target);
});

答案 1 :(得分:0)

确实你的问题是因为函数的变量声明。在每个焦点事件中设置它,最后一个焦点'变量将被重新分配。

我来晚了,但如果我到这里别人可以。

这样做:

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