我想在我点击的HTML文档中获取当前元素(无论是哪个元素)。我正在使用:
$(document).click(function () {
alert($(this).text());
});
但非常奇怪的是,我得到整个(!)文档的文本,而不是点击的元素。
如何只获取我点击的元素?
<body>
<div class="myclass">test</div>
<p>asdfasfasf</p>
</body>
如果我点击“测试”文本,我希望能够在jQuery中读取$(this).attr("myclass"
)的属性。
答案 0 :(得分:189)
您需要使用event.target
,它是最初触发事件的元素。示例代码中的this
引用document
。
在jQuery中,那是......
$(document).click(function(event) {
var text = $(event.target).text();
});
没有jQuery ......
document.addEventListener('click', function(e) {
e = e || window.event;
var target = e.target || e.srcElement,
text = target.textContent || target.innerText;
}, false);
另外,确保您是否需要支持&lt;您使用attachEvent()
而不是addEventListener()
的IE9。
答案 1 :(得分:15)
在body标签内使用以下内容
<body onclick="theFunction(event)">
然后在javascript中使用以下函数来获取ID
<script>
function theFunction(e)
{ alert(e.target.id);}
答案 2 :(得分:9)
window.onclick = e => {
console.log(e.target.innerText);
}
从点击的元素中获取文本
(input type=radio)
答案 3 :(得分:5)
您可以在event.target
中找到目标元素:
$(document).click(function(event) {
console.log($(event.target).text());
});
参考文献:
答案 4 :(得分:3)
使用delegate
和event.target
。 delegate
通过让一个元素侦听和处理子元素上的事件来利用事件冒泡。 target
是event
对象的jQ规范化属性,表示事件源自的对象。
$(document).delegate('*', 'click', function (event) {
// event.target is the element
// $(event.target).text() gets its text
});
答案 5 :(得分:0)
$(document).click(function (e) {
alert($(e.target).text());
});
答案 6 :(得分:0)
我知道这篇文章确实很老,但是,为了获取元素的内容以引用其ID,这就是我要做的事情:
window.onclick = e => {
console.log(e.target);
console.log(e.target.id, ' -->', e.target.innerHTML);
}
答案 7 :(得分:0)
这是在 javascript 中获取点击元素的最简单方法。
window.addEventListener('click', (e) => console.log(e.target));
答案 8 :(得分:-1)
这是一个使用jQuery选择器的解决方案,因此您可以轻松定位任何类,ID,类型等的标记。
jQuery('div').on('click', function(){
var node = jQuery(this).get(0);
var range = document.createRange();
range.selectNodeContents( node );
window.getSelection().removeAllRanges();
window.getSelection().addRange( range );
});