0
我怎樣才能返回所選擇的複選框值從MooTools的類:mootools的組複選框返回值
MooTools的類:
var CheckboxGroup = new Class({
Implements: Events,
initialize: function(master, slaves) {
this.master = $(master);
this.slaves = $$(slaves);
this.selected = [];
var that = this;
this.master.addEvent('click', this.onMasterClick.bind(this));
this.slaves.addEvent('click', function() {
that.onSlaveClick(this);
});
},
onMasterClick: function() {
this.slaves.set('checked', this.master.get('checked')).fireEvent('change');
this.fireEvent('masterClick');
this.fireEvent('onCheckboxClick');
},
onSlaveClick: function(slave) {
this.master.set('checked', this.slaves.every(function(el) { return el.get('checked'); }));
this.fireEvent('slaveClick', slave);
this.fireEvent('onCheckboxClick');
},
onCheckboxClick: function() {
??? how to return selected values
}
});
HTML和腳本:
<div class="container">
<label class="master"><input type="checkbox" id="master" /> Master</label>
<label><input type="checkbox" class="slave" value="1"/> Slave #1</label>
<label><input type="checkbox" class="slave" value="2"/> Slave #2</label>
<label><input type="checkbox" class="slave" value="3"/> Slave #3</label>
<label><input type="checkbox" class="slave" value="4"/> Slave #4</label>
<label><input type="checkbox" class="slave" value="5"/> Slave #5</label>
</div>
<script>
new CheckboxGroup('master', '.slave').addEvents({
'onCheckboxClick': function() {
console.log(this.selected); /*EVERY TIME [] ?????*/
}
});
</script>
'this.slaves.filter()'會當他們被緩存時會更好。實際上,將它們存儲在內存中時,隨時通過onchange變量意味着整個'setSelected'方法可以被棄用。 'this.slaves.set('checked',this.master.get('checked'))。fireEvent('change');'連續兩次'.each',BAD - 可以用來存儲選定的值。並且通過dom元素做一個手動的'.fireEvent('change')'是毫無意義的。無論如何,@Adidi - 我知道這不是你的代碼,這是爲OP。 – 2013-03-24 00:05:58
好評。我在這些方面同意你的觀點,我在他的課堂上親自看到了它,但我想他只是想了解mootools oop是如何工作的,所以在他的學習曲線期間,我不想把他的頭弄得太多......但謝謝 - 你的評論總是富有洞察力的:)) – Adidi 2013-03-24 00:11:26
當然 - 很高興有人幫忙,而不是我現在。哦,是的,連續兩個'.each'在從屬設備上,併爲每個設備創建一個新的'master.get('checked');'而不是緩存不可變的值。我幾乎開發了強迫症 - 看到非優化的代碼讓我感到不舒服:) – 2013-03-24 00:24:25