jQuery-attr(';类';)获取父类

jQuery-attr(';类';)获取父类,jquery,Jquery,我试图获取元素的类,但如果当前元素类为空,它将显示其父类 我只想检查当前元素是否有类,如果不是什么都不做,但不显示父类 $('*').click(function(){ var class_of_el = $(this).attr('class').replace('test', '').replace('test2', ''); alert(class_of_el); }); 问题是:问题是事件正在传播 试试这个: $('*').click(function(evt){

我试图获取元素的类,但如果当前元素类为空,它将显示其父类

我只想检查当前元素是否有类,如果不是什么都不做,但不显示父类

$('*').click(function(){
    var class_of_el = $(this).attr('class').replace('test', '').replace('test2', '');
    alert(class_of_el);
});

问题是:问题是事件正在传播

试试这个:

$('*').click(function(evt){
    evt.stopPropagation();
    var class_of_el = $(this).attr('class').replace('test', '').replace('test2', '');
    alert(class_of_el);
});
现在,当单击一个没有类的元素时,什么也不会发生,但是如果您单击一个有类的元素,它将发出
警报
ed。

选择所有元素,这就是为什么还要获得父元素类名

在类中添加null检查时,可以看到,它为每个元素返回值。i、 e

$('*').click(function(){
    var class_of_el = $(this).attr('class') != undefined? $(this).attr('class').replace('test', '').replace('test2', '') : 'empty';
    alert(class_of_el);
});

以下是将
单击
事件处理程序注册到文档中的所有元素并防止事件从它们传播可能是个坏主意

$(document).on('click', '*', function(e){
    if(e.target == this){
        console.log($(this).attr('class'))
    }
})

演示:

正如winterblood所说,事件正在进展到父元素,因为您选择了页面上的每个元素。
但是,我还想补充一点,如果您的目标是检查特定的类,那么您可以使用
hasClass
而不是解析
class
属性

$('*').click(function(evt) {
    evt.stopPropagation();
    var isTest = $(this).hasClass('test');
});

您应该停止事件,使其冒泡到外部元素-

你可以这样做

$('*').click(function(event){
    event.stopPropagation();  // This will stop bubbling of event
    var class_of_el = $(this).attr('class').replace('test', '').replace('test2', '');
    alert(class_of_el);
});

*
不是一个元素…而是整个文档我可以使用
e.stopPropagation()
此处您必须使用
target
此处的更多详细信息@ubercooluk无需使用
target
。jQuery总是将
$(this)
设置为目标。这与我上面的答案有什么不同?我没有检查你的答案