jQuery或JS代码,用于获取网页中当前选定的表单项/文本/图像的确切节点数据
jquery or js code to obtain exact node data for currently selected form item/text/image in a web page
我想使用 jquery 获取网页上已点击项目的确切详细信息。
该项可以是表单项(如复选框、文本框、文本区域等)或文本部分(在段落或div 或其他中)或列表或图像......
我想到了以下几点——
$(function(){
$('*')
.bind('click', function(event) {
//now obtain details of item that has been clicked on...
});
});
现在,我想要确切的详细信息 - 即div id/表单 id/段落 #,即该特定项目的所有详细信息。如何获取此数据?我知道这些数据在 DOM 中可用,但我只是不知道如何在这种特殊情况下获取它......
可能是使用事件的 target
属性的最佳方法。默认情况下,这将返回一个非 jQuery 对象,这不是特别有用,但是将其包装在 $()
中可以解决此问题:
$(function() {
$(document).bind('click', function(event) {
var element = $(event.target);
alert(element.height()); // Get height
alert(element.attr('id')); // Get ID attribute
// ...
});
});
如果要修复当前方法,可以在click()
处理程序中,可以使用.attr()
和友元访问该元素的属性:
$(function() {
$('*').bind('click', function(event) {
alert($(this).height()); // Get height
alert($(this).attr('id')); // Get ID attribute
// ...
});
});
函数作用域中的$(this)
引用单击的元素。在jQuery文档中有一个函数列表,这些函数将在此处和此处返回属性。 $.attr('id')
将返回元素的 ID,$.data()
将返回data-*
属性。
要获取父元素的属性,只需使用 $(this).parent()
。例如,若要获取包含单击的元素的窗体的 ID,请使用 $(this).closest('form').attr('id');
。一切都是相对于点击的元素($(this)
),所以你可以只使用 DOM 遍历函数。
但是,使用 $('*').bind()
的效率非常低;您将事件处理程序绑定到页面上的每个元素,而实际上您应该使用 .on()
(jQuery 1.7+) 委托事件:
$(function() {
$('body').on('click', '*', function(event) {
alert($(this).height()); // Get height
alert($(this).attr('id')); // Get ID attribute
// ...
});
});
此方法仅将一个事件绑定到<body>
而不是将一个事件绑定到页面上的每个元素。
使用页面上点击事件的目标
$(document).click(function(event){
/* store native dom node*/
var tgt=event.target;
/* store jQuery object of dom node*/
var $tgt=$(tgt);
/* example element details*/
var details={ id : tgt.id, height: $tgt.height(), tag : tgt.tagName}
console.log( details)
})
查看event.target
,然后可以使用 jQuery 的 .parents()
方法查看每个祖先:
$(document).on('click', function(event) {
var $t = $(event.target); // the element that was actually clicked
var $p = $t.parents(); // the target's parents
var $form = $p.filter('form').first(); // the enclosing form, if it exists
});
- 表单文本框未自动更新
- 使用 javascript 表单文本框内容
- 使用javascript手动更改表单/文本区域输入,并确保所有事件侦听器都已启动
- 按钮更改由按钮id输入的表单文本区域
- 使用jQuery用data-*数据填充表单文本输入
- Javascript - 当用户输入内容时更改表单文本框的边框颜色
- 填写表单文本框,其中包含数据库表中的数据(如果用户存在)
- 将表单文本框和按钮放在每个单选按钮的前面
- 如何在表单文本框中启用退格工作
- 将文本从表单文本发送到电子邮件
- 为什么我的表单文本框会自动填充以前的文本框值
- WordPress联系人表单7文本框未在Chrome中显示
- Chrome扩展-点击清除表单文本
- 根据表单选择值禁用和启用表单文本输入.
- 表单文本框未标识为对象
- 是否可以在JavaScript中输入表单文本时验证多个值
- 基于同一表单中下拉菜单的值启用HTML表单文本框
- JavaScript-将表单文本存储在本地存储中
- 我们如何通过表单文本输入通过ajax发送json编码的数据
- 获取jQuery表单-文本值的id