是否有方法(JS pure或Jquery)搜索页面上的所有元素(例如)附加了touchstart事件处理程序?
我读到$ ._数据($(' .element')[0],' events'); method获取某个元素的事件。我的想法就是反过来了。
提前致谢!
修改
我试着解释我在做什么(或者至少计划做什么;-)。 基本上我需要一个针对iOS8 + bug的解决方法,该错误涉及在主屏幕(独立)使用中在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事件的所有元素创建此数组?
获得一些帮助会很酷。 到目前为止,感谢您的想法!
答案 0 :(得分:0)
正如你有一段代码,你可以这样使用:
$("button").on({ // here bound some events on a button element
click: function() {
alert("Hello")
},
touchstart: function() { // here is the touchstart event
alert("World")
}
});
// Lookup events for this particular Element
$('button').each(function(i) { // loop through each button
var log = $._data($("button").get(i), "events"); // get the event bound on it
if (log.touchstart) { // check if a particular event is bound
console.log('yes touchstart is bound.'); // perform the task.
// logs the message 4 times as touchstart event is bound on
} // button element only not on type"submit".
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>mybtn</button>
<button>mybtn</button>
<button>mybtn</button>
<input type='submit' value="submit" />
<button>mybtn</button>