3
event.target
函數適用於div而不適用於表元素。e.target()不適用於表元素
的html代碼:
<div class="one body" >
sd
</div>
<div class="two body">
sddsd
</div>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="three body">jjj</table>
JS:
$(".body").click(function(e){
alert("xxxxxxxxx"+e.target.className);
});
DEMO:http://jsfiddle.net/kavinhuh/z4rkW/31/
您的HTML表格無效。 「jjj」實際上並不在表格內呈現。你需要(一個'
'然後)一個'謝謝大家對我非常有幫助的意見,我愛堆棧溢出 – kavinhuh
回答
導致實際e.target是TD,而不是表
雖然你有一個不正確的表格HTML元素結構。預計表格有
tr
和td
元素。//是第一觸發事件(
TD
)//是,被委派至該事件,在這種情況下,元件
.body
來源
2013-11-14 15:29:26
哪個瀏覽器把文本放在'td'裏面? Chrome把它放在「表格」之外。 – lonesomeday
@ lonesomeday doh,對。認爲像瀏覽器自動添加
在這裏做了同樣的工作。檢查,這是正確的。 FF的行爲方式相同。任何我要測試的方式,你只是更快;) –這是因爲元你的HTML是非法的。如果你有非法的HTML,你不應該期望你的代碼正常工作。
文字可能不是
table
的直接子元素。您需要tr
和td
或th
。瀏覽器重新解析您的HTML並使合法的東西。在這種情況下,它將文本放在表格之外:這取自Chrome的DOM檢查器。解決方法是將文本合法地放入
table
。來源
2013-11-14 15:32:21 lonesomeday
table
元素不能有任何文字內容,所以,你的HTML實際上將呈現爲這就是爲什麼你的事件處理函數不是當你在
jjj
來源
2013-11-14 15:33:42 shyam
使用
this
點擊,而不是e.target
射擊。e.target
將爲您提供點擊元素,而不是事件已附加到的元素。當事件已附加到的元素具有子元素時,您單擊子元素e.target
將返回子元素。來源
2013-11-14 15:36:53
我不認爲OP想要得到'body'元素的類... – lonesomeday
相關問題