Javascript jQuery获取元素类名称
使用iPhone/iPad时,如何获取触摸元素类名?Javascript jQuery获取元素类名称,javascript,jquery,touch,Javascript,Jquery,Touch,使用iPhone/iPad时,如何获取触摸元素类名? $(document).bind("touchstart", function (e) { var test1 = e.targetTouches[0].attr('class'); var test2 = e.targetTouches[0].hasClass('menu-item') var test3 = $(e).attr('class'); if (test1 != 'class-name')
$(document).bind("touchstart", function (e) {
var test1 = e.targetTouches[0].attr('class');
var test2 = e.targetTouches[0].hasClass('menu-item')
var test3 = $(e).attr('class');
if (test1 != 'class-name')
DoSomething();
if (test2 != true)
DoSomething();
if (test3 != true)
DoSomething();
});
这三个测试中没有一个有效。
这在PC上有效:
$(document).click(function (event) {
var test = $(event.target).attr('class');
if (test != 'class-name')
$('.collapse').collapse('hide');
});
更新:
$(document).click(function (event) {
var test = $(event.target).attr('class');
if (test != 'class-name')
$('.collapse').collapse('hide');
});
这将在屏幕上单击时关闭导航栏
if ($(".navbar-collapse").hasClass("in"))
$('.collapse').collapse('hide');
如果我将代码更新为:
var test = e.targetTouches[0].target.className;
if ($(".navbar-collapse").hasClass("in"))
$('.collapse').collapse('hide');
它不再起作用了。
Is
var test=e.targetTouches[0].target.className
真的是有效的表达式吗?如果必须使用targetTouches
,则需要使用对象的target
属性,该属性是DOM元素。如果要对其使用jQuery方法,则必须对其进行包装。最后,要访问jQuery没有显式复制到jQuery事件对象的任何内容,需要使用jQuery事件对象的originalEvent
属性
例如(使用jQuery包装器):
或者(直接指向反射的className
属性):
$(文档).on(“touchstart”,函数(e){
如果(!e.originalEvent.targetTouches){
console.log(e.type+“:No e.originalEvent.targetTouches”);
}
如果(!e.originalEvent.targetTouches[0]){
console.log(e.type+“:No e.originalEvent.targetTouches[0]”);
}
如果(!e.originalEvent.targetTouches[0].target),则为else{
console.log(e.type+“:No e.originalEvent.targetTouches[0].target”);
}
否则{
console.log(e.type+“:e.originalEvent.targetTouches[0].target.className:”+e.originalEvent.targetTouches[0].target.className);
}
//请注意,正如我在一篇评论中所说,“e.target.className”很好用
//对于主要元素
log(e.type+“:e.target.className:”+e.target.className);
});代码>
div{
边框:1px实心#aaa;
背景色:#eee;
高度:4em;
字体系列:无衬线;
文本对齐:居中;
}
顶球
中段
底部divvar测试=$(event.target).attr('class')代码>在您的第一个示例中也有效?!(或者只是var test=event.target.className;
)解释器甚至无法到达if
语句。如果您想使用jQuery方法,首先应该创建一个jQuery对象。T.J-不,它在iPhone和iPad上不起作用。。你能用代码告诉我你的意思吗?它可以在除iPhone和iPad之外的所有其他设备上工作,所以这应该不是问题。@Reft:我觉得很难相信。你能创建一个堆栈片段或JSFIDLE或jsBin或类似的例子来证明这一点吗?@Reft:果然,e.target.className
在iOS Safari中可以很好地实现这一点:但我也向你展示了如何使用targetTouches
,如果这对你很重要(例如,对于多点触摸的东西)。
var test = e.originalEvent.targetTouches[0].target.className;