我正在尝试使用以下代码来引用我的contenteditable div中的任何内容,其id为rt
:
var lastfocused;
$("#rt *").focus(function () {
lastfocused = $(this);
});
出于某种原因,lastfocused总是等于$("#rt");
,但从来没有任何其他可能在可信任的div内。我如何做到这一点,以便聚焦在contenteditable div中的任何内容都存储在lastfocused
变量中?
答案 0 :(得分:2)
看起来您的问题在其他地方。上面的代码对我很有用:
编辑
如果子元素不是你所说的输入,而是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);
});