Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查找已连接touchstart处理程序的所有元素_Javascript_Jquery_Events - Fatal编程技术网

Javascript 查找已连接touchstart处理程序的所有元素

Javascript 查找已连接touchstart处理程序的所有元素,javascript,jquery,events,Javascript,Jquery,Events,有没有一种方法可以让JS pure或Jquery搜索页面上所有附加了touchstart事件处理程序的元素 我读到$._data$'.element'[0],'events';方法获取特定元素上的事件。我的想法正好相反 提前谢谢 编辑: 我试图解释我正在做什么或至少计划做什么;-。 基本上,我需要一个解决iOS8+错误的方法,该错误涉及在主屏幕独立使用的iFrame中注册的缺失触摸事件 所以我的想法是有一个覆盖div,我把它放在iframe上面。在其中,我创建了克隆的空白伪元素,这些伪元素代替i

有没有一种方法可以让JS pure或Jquery搜索页面上所有附加了touchstart事件处理程序的元素

我读到$._data$'.element'[0],'events';方法获取特定元素上的事件。我的想法正好相反

提前谢谢

编辑:

我试图解释我正在做什么或至少计划做什么;-。 基本上,我需要一个解决iOS8+错误的方法,该错误涉及在主屏幕独立使用的iFrame中注册的缺失触摸事件

所以我的想法是有一个覆盖div,我把它放在iframe上面。在其中,我创建了克隆的空白伪元素,这些伪元素代替iframes的实元素触发触摸事件。 所以我做了,这部分工作很好:

var $frameContents = $("#my_iframe").contents();
$("#overlayer").empty(); // avoid double elements on reopening  

// example element  
var $exampleElement = $frameContents.find("#exampleElement");

$exampleElement
    .clone()
    .empty()
    .appendTo( "#overlayer" )
    .on( 'touchstart', function(e) {
        e.stopPropagation();
        $exampleElement.trigger( 'click' );
    } );
正如我所说,到目前为止一切都很好。 我的想法的第二部分不是自己定义每个元素,而是让代码搜索使用touchstart事件的所有元素,并自动执行该过程

参考您的评论和回答,我尝试:

var touchElements = []; // array for all elements to be found (with touchstart events attached to them)

$.each( $frameContents, function( index, value ) {

    $(value).each(function(i) { // loop through each button
        var log = $._data( $(value).get(i), "events" ); // get the event bound on it

        if ( log.touchstart ) { // check if a particular event is bound
            touchElements.push(value); // perform the task.
        };
    } );
} );

alert(touchElements);
可悲的是,这部分根本不起作用,因为我对每件事都缺乏透彻的理解:- 如何创建包含touchstart事件的所有元素的阵列

能得到一些帮助会很酷的。
谢谢你的想法

当您有一段代码时,您可以通过以下方式使用它:

$button.on{//此处绑定了button元素上的一些事件 单击:函数{ 警报你好 }, touchstart:函数{//这是touchstart事件 警报世界 } }; //此特定元素的查找事件 $'button'。每个函数{//循环遍历每个按钮 var log=$。\u data$button.geti,events;//获取其上的事件绑定 如果log.touchstart{//检查是否绑定了特定事件 console.log“是,touchstart已绑定”。;//执行该任务。 //在touchstart事件绑定时记录消息4次 }//仅按钮元素不在typesubmit上。 }; mybtn mybtn mybtn
MyBTI我认为您必须迭代所有元素并检查处理程序是否已配置,因此我猜我的问题的答案是两者的组合:您的答案和Arun对我的问题的评论。因此,我必须迭代页面上存在的每个元素,运行此处建议的代码,然后创建一个数组,如果touchstart在代码中绑定,则每次添加一个元素时都会添加一个数组:是的,touchstart是绑定的哦,天哪…