Javascript jQuery获取元素类名称

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')

使用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')
        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;
字体系列:无衬线;
文本对齐:居中;
}

顶球
中段

底部div
var测试=$(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;