如何使用jQuery在元素中提取特定的类部分?

时间:2013-11-13 21:43:07

标签: jquery

我的元素包含这样的类:

class="modal-view arch business"

如何在类中找到具有模态起始单词的元素并仅返回“查看”单词或模态后的单词?

我已经尝试了这个

jQuery("*[class^='modal-'],*[class^='modal-'] a").live('click',function(){
var type = jQuery(this).attr('class').split('-')[1];
alert( type );
});

它不起作用,它只显示我的视图,如果类是模态视图,但如果有其他类它不起作用。有人能指出我正确的方向吗?

所以我试图找到模态之后的部分 - 而不是其他类。如果该类只有模态字

,那么我使用的分割代码是有效的

4 个答案:

答案 0 :(得分:1)

使用$('*[class^=modal-]').live(...);

Working jsFiddle

答案 1 :(得分:0)

使用属性begin with selector,然后获取className,在空格上拆分以获取第一个类,假设它始终是示例中的第一个类,然后将第一个类拆分为连字符并弹出最后一个位:< / p>

$(document).on('click', '[class^="modal"]', function() {
    var klass = this.className.split(/\s+/g)[0];
    alert ( klass.split('-').pop() );
});

FIDDLE

答案 2 :(得分:0)

您可以在拆分后添加正则表达式匹配,以获得短划线后的第一个单词。

jQuery("*[class^='modal-'],*[class^='modal-'] a").live('click',function(){
  var type = jQuery(this).attr('class').split('-')[1].match(/\w*/);
  alert( type );
});

http://jsfiddle.net/xw87B/

答案 3 :(得分:-1)

我建议(虽然这是未经测试的,我使用的是on()而不是live()):

$('body').on('click', '[class^="modal-"]', function(){
    var classes = this.className.split(/\s+/);
    for (var i = 0, len = classes.length; i < len; i++){
        if (classes[i].indexOf('modal-') === 0) {
            console.log(classes[i].replace('modal-','');
        }
    }
});
但是,我不能想到jQuery库可能提供的“简单”方式。

但值得观察的是,您似乎正在以错误的方式解决另一个问题(应用程序的查看状态或modal对话?),从而导致可能不需要的复杂解决方案

参考文献: