JQ 检测子元素可点击的对象并装入数组

jqjs怎么实现检测出子元素中是否包含可点击的对象,并把可以点击的对象装入数组!
比如:

<div class="a">
    <div id="a1" onclick='fn'>
    </div>
    <div class="jp-volume-controls">
        <div class="a2" onclick='fn1'>
            <div class="jp-volume-bar-value"></div>
        </div>
    </div>
</div>

提取出来就是:

[$('#a1'),$('.a2')]
阅读 2.3k
4 个回答
    var aaa = document.querySelectorAll('.a *');
                    var arr = [];
                   [].slice.call(aaa).forEach(function(element) {
                        if(element.onclick!=null){
                            arr.push(element);
                        }   
                   });
                     console.log(arr);

补充一个es6的

 var aaa = document.querySelectorAll('.a *');
    var arr =  [...aaa].filter(s=>{
      return s.onclick!=null;
   });
   console.log(aaa)

感觉思路是和我相反的!
为什么要去检测可点击的元素?
而不是,给可以点击的元素单独加class,然后给这个class绑定点击事件。
这样就很容易处理后续!

jq:

var obj = [];
$(".a *").each(function(){
    var _obj = $(this),
        evt = _obj.data('events');
        
    if(typeof evt != 'undefined' && typeof evt.click != 'undefined'){
        obj.push(_obj);
    }
});
// 有点击事件的jq对象
console.log(obj);
    $(function(){
        console.log($(".a").find('*'))
        var childrenList = $(".a").find('*');
        var eventList = [];
        for(var i = 0;i<childrenList.length;i++){
            var model = $(childrenList[i]);
            console.log(model.attr("onclick"))
            if(model.attr("onclick")){
                eventList.push(model)
            }
        } 
        console.log(eventList)   
    })
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题