2012-09-01 50 views
4

我嘗試使用下面的代碼來引用任何關注我的CONTENTEDITABLE DIV,其中有rt的ID內:使用專注於contenteditable div內的元素?

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

出於某種原因,lastfocused總是等於$("#rt");,但從來沒有任何東西可以是內部可愛的div如何讓這個事情集中在CONTENTEDITABLE格內將被存儲在lastfocused變量?

+0

你可以張貼標記,它爲我工作與投入裏面 –

+0

@agreco我的標記就在那裏。所有其他引用都是默認的。 – think123

回答

2

看起來像你的問題是在其他地方。上面的代碼完美地工作對我來說:

http://jsfiddle.net/8hZWq/

編輯

如果孩子像你說的內容不是投入,而是div的 - 焦點()方法並不適用於他們,因爲它僅適用於輸入,文字區域,選擇等

你也可以使用。點擊(),而不是重點()來存儲參考最後點擊的元素。請記住,它也取決於你的元素的結構。

例如,如果你有孩子的div容器內的多個級別,則#ID *選擇確實會觸發多次從#ID開始孩子的每個級別。

如果你喜歡參考存儲只有#ID的孩子的第一個層次,你應該使用#ID > *選擇僅指直接孩子。

如果你喜歡存儲參考只被點擊,無論它的水平相對於容器的非常元素,你應該使用點擊活動對象引用,而不是:

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

但我的問題是與contenteditable div,而不是與輸入字段。 – think123

+0

但div沒有焦點,是嗎? – Anonymous

+0

是的,它的確如此。就我而言,任何元素都可以擁有焦點。 – think123

0

事實上,你的問題是因爲函數的變量聲明。設置它,在每個焦點事件中,'lastfocused'變量將被重新分配。

我後來才,但如果我來到這裏別人可以。

這樣做:

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