4

我试图弄清楚是否有办法.hasClass()多次执行以查看我正在使用的活动元素是否具有当前四个特定类之一,我还试图找出最优化的方法来执行此操作,而元素(s) 作为触发器(或活动元素)有多个类,主要用于样式目的。

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
});

在这个点击处理程序中,我希望能够检测点击的元素是否是上述四个之一。如果它在哪里,我想根据它做一些事情。因此,确定哪个类是单击的元素,而不是为每种类型构建四个单击处理程序。我希望我可以将其优化并包含在单个处理程序中。有任何想法吗?

4

2 回答 2

1

一种选择:

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/

于 2013-03-26T20:17:56.520 回答
0
if ($(this).is(".primary_row")) {
    ...
} elseif ($(this).is(".primary_row_sub")) {
    ...
} and so on
于 2013-03-26T20:04:04.650 回答