javascript - jQuery 获取点击类名

标签 javascript jquery

<分区>

Possible Duplicate:
Get Class List for Element with jQuery

如果我有这样的事情,我可以通过这样做来获得被点击的选择器的 ID。

$('#one, #two, #three').click(function(){
    alert(this.id)
})

我的问题是,如果我有类而不是 id,我如何获得单击的选择器的类名。

$('.one, .two, .three').click(function(){
    // ??????
})

编辑:

被点击的元素可能有多个类,我希望隔离最初用于选择元素的类。

最佳答案

您将使用 native .className 属性。

this.className

this.className 而不是 this.class 因为 class 是 JavaScript 中的保留字,有些浏览器不允许保留用作属性名称的单词。


听起来一个元素上可能有多个类。要隔离一个,您可以将 $.grep$.inArray 一起使用。

var classes = ['one','two','three'];

$('.' + classes.join(',.')).click(function(){
    var classNames = this.className.split(/\s+/);
    var cls = $.grep(classNames, function(c, i) {
        return $.inArray(c, classes) !== -1;
    })[0];
    alert(cls);
});

演示: http://jsfiddle.net/rFT8j/


或者您可以使用 $.each 而不是 $.grep

var classes = ['one','two','three'];

$('.' + classes.join(',.')).click(function(){
    var classNames = this.className.split(/\s+/);
    var cls;
    $.each(classNames, function(i, c) {
        if( $.inArray(c, classes) !== -1 ) {
            cls = c;
            return false;
        }
    });
    alert(cls);
});

演示: http://jsfiddle.net/rFT8j/1/


如果你想要一些更简单的东西,一个解决方案是利用闭包,并分配单独的处理程序,每个处理程序在变量范围内引用不​​同的名称...

var classes = ['one','two','three'];

$.each(classes, function(i, c) {
    $('.' + c).click(function(){
        alert(c);
    });
});

演示: http://jsfiddle.net/rFT8j/3/

关于javascript - jQuery 获取点击类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9119745/

相关文章:

javascript - v3 有办法重新获取 fullcalendar 吗?

javascript - 如何在x秒后停止重新加载间隔?

javascript - 如何将子 Div 移动到另一个嵌套的非父 Div 中

javascript - 避免在 HTML5 Canvas 中混合颜色

javascript - Nivo slider : add extra class to the nivo-caption div

javascript - 使用 ajax 将数据发布到 PHP 文件

javascript - 为什么 return 在 getJSON 中不起作用以及为什么我不能从 getJSON 写入变量?

javascript - 单击“查看页面源代码”时,ReactJS 不显示 HTML

javascript - 在 Inspect Element Editor 中更改 JS 代码

jquery - 如何只追加一次? jQuery