0

我有这样的类的元素:

class="modal-view arch business"

如何在类中找到具有 modal- 起始词的元素并仅返回“view”词或 modal 之后的任何词?

我已经试过了

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

它不起作用,仅当类是模态视图时才显示视图,但如果还有其他一些类则不起作用。有人可以指出我正确的方向吗?

所以我试图找到模态之后的部分 - 但不是其他类。如果该类只有模态词,我使用的拆分代码有效

4

4 回答 4

1

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

工作的jsFiddle

于 2013-11-13T21:50:18.740 回答
0

使用以选择器开头的属性,然后获取类名,在空格上拆分以获取第一个类,假设它始终是示例中的第一个类,然后在最后一位的连字符和 pop 上拆分第一个类:

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

小提琴

于 2013-11-13T21:47:26.950 回答
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/

于 2013-11-13T21:56:10.417 回答
-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错误的方式解决另一个问题(应用程序或对话的视图状态?),这导致了可能不需要的复杂解决方案。

参考:

于 2013-11-13T21:46:57.607 回答