2013-07-31 57 views
0

我有这样错误的类被触发

<div id="jquery-modal" class="close" style="position: absolute; top: 0px; right: 0px; left: 0px; background-color: rgba(0, 0, 0, 0.701961); z-index: 5; height: 653px; background-position: initial initial; background-repeat: initial initial;"> 
    <div class="myclass" data-multiselect="0" style="height: 633px; top: 10px; display: block;"></div> 
    <div class="myclass" data-multiselect="1" style="height: 633px; top: 10px; display: block;"></div> 
</div> 

一个HTML请注意上面的html 多选1和0,现在在我的js我申请根据多选切换。问题是当我用data-multiselect =“1”单击myclass div时,它仍然通过data-multiselect = 0获取它上面的div。我如何修复我的js来处理这个问题。这里是我的js当您尝试使用此var isMultiselect = Selector.data('multiselect');它总会获取类的第一个实例

function onClickingLi(event) {  
    var Selector = $('#jquery-modal').children('.myclass'); 
    var isMultiselect = Selector.data('multiselect'); 
    if (isMultiselect) { 
     $(event.target).toggleClass('selected'); 
    } 
    else { 
     Selector.find('li.selected').removeClass('selected') 
    } 
} 
+0

如何定义点击事件 –

+0

你的选择器应该返回一个数组。 –

+0

由于您直接点击div.myclass,您可以将'$(event.target).data('multiselect')'存储在一个变量中,并根据此值切换'selected'类。 –

回答

3

$('#jquery-modal').children('.myclass');

去给你拿2元(jQuery的对象)

<div class="myclass" data-multiselect="0" 
<div class="myclass" data-multiselect="1" 

因此,这有multiselect=0

所以你需要提及点击事件是如何绑定的,以及将如何使目标使特定班级变得更容易。

+0

添加Shushanth所说的,而不是'''var Selector = $('#jquery-modal')。children('。myclass');'''做一些像'''var Selector = $(event。目标);''' – bzuillsmith

+0

但是我们不知道'event.target'是什么..所以没有提到,因为没有它绑定的事件的上下文没有意义 –

+0

是的。我明白了为什么你没有包括那个,但我认为'''myclass''的div没有孩子,他们可以点击/目标。如果他们这样做,那么识别正确的div将需要从被点击的孩子遍历,或者在每个'''myclass''上加入某种唯一标识符到混合中。 – bzuillsmith