如何获得点击的元素(整个文档)?
我想在我点击的HTML文档中获取当前元素(无论是哪个元素)。 我在用:
$(document).click(function () { alert($(this).text()); });
但是很奇怪的是,我得到了整个(!)文档的文本,而不是单击的元素。
如何获得我点击的元素?
例
<body> <div class="myclass">test</div> <p>asdfasfasf</p> </body>
如果我点击“testing”文本,我希望能够读取jQuery中的$(this).attr("myclass"
)属性。
您需要使用最初触发事件的元素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 || text.innerText; }, false);
另外,确保您是否需要支持使用attachEvent()
而不是addEventListener()
<IE9。
在身体标记中使用以下内容
<body onclick="theFunction(event)">
然后在javascript中使用以下函数来获取ID
<script> function theFunction(e) { alert(e.target.id);}
你可以在event.target
find目标元素:
$(document).click(function(event) { console.log($(event.target).text()); });
参考文献:
使用delegate
和event.target
。 delegate
通过让一个元素监听和处理子元素上的事件来利用事件冒泡的优势。 target
是表示事件源自的对象的event
对象的jQ-normalized属性。
$(document).delegate('*', 'click', function (event) { // event.target is the element // $(event.target).text() gets its text });
演示: http : //jsfiddle.net/xXTbP/
window.onclick = e => { console.log(e.target); console.log(e.target.tagName); }
从单击的元素中获取文本
window.onclick = e => { console.log(e.target.innerText); }
$(document).click(function (e) { alert($(e.target).text()); });
这是一个使用jQueryselect器的解决scheme,因此您可以轻松地定位任何类的标签,ID,types等
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 ); });