2016-07-18 42 views
-1

这是我的代码以复选框与一个和类作为或图所示是否可以使用复选框更改与类的组合?

<input type="checkbox" class="one" value="1"> 
<br/> 
<input type="checkbox" class="two" value="2"> 
<br/> 
<input type="checkbox" class="one" value="3"> 
<br/> 

如果复选框被选中选中,我有下面的代码,这被称为

$(document).on('change', '.[type="checkbox"]', function(event, data){ 
    alert('checked '); 
}); 

我的问题是,我怎么能在事件处理程序中使用类?

我已经试过这样

$(document).on('change', '.one .[type="checkbox"]', function(event, data){ 
    alert('checked '); 
}); 
$(document).on('change', '.two .[type="checkbox"]', function(event, data){ 
    alert('checked '); 
}); 

http://jsfiddle.net/FdEhf/32/

回答

3

这是一个错误的选择:

'.[type="checkbox"]' 

你不能有属性选择前点.


现在回答你的问题,你可以用这样的方式:

'.one[type="checkbox"]' 
// make sure you don't have any space in between. 

那么你可以有一个共同的类名给每个复选框,可以绑定在该类更改事件:

$('.commonClass[type="checkbox"]').on('change', function(event, data) { 
 
    if (this.checked) { 
 
    console.log(this.classList[1]+' checked '); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<input type="checkbox" class="commonClass one" value="1"> 
 
<br/> 
 
<input type="checkbox" class="commonClass two" value="2"> 
 
<br/> 
 
<input type="checkbox" class="commonClass three" value="3"> 
 
<br/>

你并不需要有,除非你已经动态生成:checkbox元素对任何事件绑定事件代表团方式。

2

是的,这是可能的。

您可以使用此选择:

.one[type="checkbox"] 

要打破它,这个选择器将任何元素匹配的.one类作为一种类型属性等于checkbox

您也可以只有[type="checkbox"]作为选择器,然后在更改处理程序中检查元素类。如果你想有不同的复选框之间略有不同的功能,这将是有益的 -

$(document).on('change', '[type="checkbox"]', function(event, data){ 
    var classes = $(this).attr('class').split(' '); // may be multiple classes - split them into an array 
    if ($.inArray('one', classes)){ 
     alert('.one was changed!'); 
    } else { 
     alert('some other checkbox was changed!'); 
    } 
}); 

对于这个简单的例子,它可能是矫枉过正,但它将使您进一步定制不同的复选框。

0

首先删除一个额外的“。”在此之前[type="checkbox"]和第二次只使用像.one .two这样的类作为事件监听器,您将根据需要得到结果。

相关问题