2016-07-18 67 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這樣的類作爲事件監聽器,您將根據需要得到結果。

相關問題