jQuery匹配单个类与预定义的列表,其中元素有多个类



我试图弄清楚是否有一种方法可以多次做.hasClass(),看看我正在使用的活动元素是否有目前四个特定类中的一个,我还试图找出最优化的方法来做到这一点,而作为触发器的元素(或活动元素)在其中有多个类,主要用于样式目的。

HTML示例:

<div class="form_row">
    <div class="primary_row">1</div>
</div>
<div class="form_row">
    <div class="primary_row subexists">1</div>
    <div class="primary_row_sub">1a</div>
</div>
<div class="form_row">
    <div class="primary_row subexists">1</div>
    <div class="primary_row_sub subexists">1a</div>
    <div class="secondary_row">2</div>
</div>
<div class="form_row">
    <div class="primary_row subexists">1</div>
    <div class="primary_row_sub subexists">1a</div>
    <div class="secondary_row subexists">2</div>
    <div class="secondary_row_sub">2a</div>
</div>

我目前正在构建它的过程中,所以这仍然是一个粗略的草案,但可以肯定的是,根据需要,更多的类将存在于不同的元素上。我担心的四个主要课程是primary_row, primary_row_sub, secondary_row, secondary_row_sub。我正在构建一个点击处理程序,如:

$('.form_row > div').click(function()
{
   //code
});
在这个单击处理程序中的

,我希望能够检测被单击的元素是否为上面提到的四个元素之一。如果它在哪里,我想基于它做一些事情。因此确定被单击的元素属于哪个类,而不是为每个类型构建四个单击处理程序。我希望我能保持它的优化和包含到一个单一的处理程序。什么好主意吗?

一个选项:

var classMap = {"one": function () { alert("one");}, 
                "two": function () { alert("two");},
                "three": function () { alert("three");} 
               }
,   classes = "";
$('div').click(function (e) {
    classes = this.className.split(" ");
    for (key in classMap) {
        if ($.inArray(key, classes) !== -1) {
            classMap[key]();
        }   
    }
});
http://jsfiddle.net/wp9X7/5/

if ($(this).is(".primary_row")) {
    ...
} elseif ($(this).is(".primary_row_sub")) {
    ...
} and so on

相关内容

  • 没有找到相关文章

最新更新