首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Jquery选择具有事件属性的元素?

如何使用Jquery选择具有事件属性的元素?
EN

Stack Overflow用户
提问于 2012-10-21 23:48:11
回答 4查看 238关注 0票数 9

希望有一个简单的解决方法来解决这个问题。我想选择所有具有事件属性的html元素。例如: onclick、onkeypress等。有没有一种最简单的方法来使用Jquery来实现这一点,而不是分别按每个属性进行选择?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-10-21 23:54:47

我相信你的问题的简短答案是否定的。

不同的HTML标签支持不同的事件,因此它们应该被硬编码在jQuery代码中的某个地方。通读jQuery代码,例如,我找不到任何对onkeypress事件的引用。

因此,我认为您可以只依赖Has Attribute Selector [attribute]

代码语言:javascript
运行
复制
$('[onclick], [onkeypress], [etc]');
票数 4
EN

Stack Overflow用户

发布于 2012-10-21 23:55:20

如果值不是特定的,您可以尝试this approach

下面的演示基于$([attr1],[attr2],...,[attrN])选择器打印“嘿,你们好”:

代码语言:javascript
运行
复制
<div class="container">
    <div>no id</div>
    <div id="a">hey</div>
    <span name="b">you</span>
    <p id="c">guys</p>
</div>​

$('[id],[name]').each(function(){
    console.log($(this).text());
});​

基于这种构造,可以编写简单的包装器:

代码语言:javascript
运行
复制
$.fn.hasAttrib = function() {   
    var attributes = [];
    $.each(arguments, function(index, value){
        attributes.push('[' + value + ']');
    });
    return $(this).find(attributes.join());
};

在下面的语句中使用这样的插件也会打印“嘿,你们这些人”

代码语言:javascript
运行
复制
$('.container').hasAttrib('id','name').each(function(){
    console.log($(this).text());
});
票数 1
EN

Stack Overflow用户

发布于 2012-10-22 00:25:35

您可以创建一个自定义筛选器函数,以便在上查找属性以开头的元素,如下所示:

代码语言:javascript
运行
复制
$.fn.filterOn = function() {
   this.each(function(ind,el) {
       var attrs = el.attributes;
       for (var i = 0; i < attrs.length; i++) {
           if (attrs[i].nodeName.indexOf('on') === 0) return true;       
       }
       return false;
   });
};

并像这样使用它:

代码语言:javascript
运行
复制
//elems will contain all input fields with an attribute starting with 'on'
elems = $(':input').filterOn(); 

这将为您提供页面中具有以上的开头的属性的所有元素(使用*选择器时要注意性能):

代码语言:javascript
运行
复制
$("*").filterOn().each(function() {
   console.log('Element '+this.tagName + ' has an on... attribute');
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12999406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档