2017-01-23 234 views
0

爲了識別用戶正在點擊的元素,我試圖使用事件對象target無法將event.target轉換爲字符串

$(document).click(function (e) {  
    var str = e.target.toString(); 
    console.log(str); 
    if (str.indexOf("some class or id") >= 0) { 
     //do something 
    }; 
}); 

然而.toString()似乎並沒有對e.target一個有用的效果。如果我這樣做:

console.log(e.target); 

我得到一個字符串,其中包含DOM元素的開頭,例如<div class="myclass">。這是必要的,以檢查是否有子的存在,例如myclass「或myid,使用indexOf

我在這裏的目的是識別通過觀察event.target對其中div的,用戶點擊」 myclass但是,如果我嘗試將它做成一個字符串」。

然而indexOf不會在這裏工作,因爲它會返回‘str是不是一個函數’

,因爲這樣的:

console.log(e.target.toString()); 

我得到[object HTMLDivElement]。沒有我需要的HTML字符串的痕跡。

如何將event.target的輸出轉換爲我可以操縱的字符串?

p.s請注意,這種情況與this one非常相似,關於event.target.id:但所提出的解決方案對我無效。

+0

是否要檢查元素的文本內容,或者你只是想看看它是否屬於一個特定的類?如果你確實需要這些內容,那麼innerHTML,innerText等將是通常的嫌疑犯。 – CBroe

+0

您的實際需求是什麼?你想獲得被點擊的物品的html代碼,或者你想要用class或id來標識物品?具體問題。 –

+0

正如我上面寫的,「這是爲了檢查是否存在一個子字符串,例如myclass」或「myid」event.target的輸出似乎只是一個元素的開始,無論如何...因爲我需要知道用戶點擊哪個div。我對innerHTML不感興趣,我只是用這個開始找到我尋找的類或id。 – nico

回答

1

你不需要將它轉換爲字符串。擺脫.toString()

直接使用其ID屬性。

if (e.target.id == 'myid'){ 
    //do something 
}; 

但是如果你想valdate針對選擇使用.is()

檢查電流匹配的一套對選擇,元素或jQuery對象的元素,如果這些元素中的至少一個匹配返回true給出的參數。

if ($(e.target).is('.myclass')){ 
    //do something 
}; 
1

在e.traget中,您具有HTML DOM元素。所以,如果它有一個id,你應該可以做類似

var str = $(e.target).attr("id"); 
if(str.indexOf("id") > -1){ //do something} 
+0

'attr()'是一個jQuery方法,它不可用於DOM節點;你需要'e.target.id','e.target.getAttribute('id')',或者:'$(e.target).attr('id')' –

+0

確實,我會更新答案以反映這一點 – kimy82