我试图弄清楚是否有一种方法可以多次做.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