2014-01-21 41 views
0

我有一個頁面有兩個複選框。例如Backbone.js手動點擊複選框觸發,但'代碼點擊'一個不

<label class="checkbox" for="1"> 
    <input id="1" type="checkbox"> 
     Option#1 
</label> 
<label class="checkbox" for="2"> 
    <input id="2" type="checkbox"> 
     Option#2 
</label> 

如果我手動單擊瀏覽器複選框#1,選中該複選框(顯然)和變化由骨幹回升。

如果我在頁面中有一個jQuery示例片段,例如由一個錨點觸發,檢查/選擇代碼中的框,它不會被Backbone拾取。在jQuery的我已經嘗試了所有的以下內容:

$('#2').prop('checked', true, true); 
$('#2').attr('checked','checked'); 
$('#2').trigger("click"); 
$('#2').change(); 

的框出現在使用上述片段的一個瀏覽器檢查,但只有骨幹拿起人工檢查框,而不是一個「代碼」檢查,即使他們都在一起完成。

我很欣賞任何加深我對Backbone事件的理解的答案!

回答

0

試過這樣:

$('#2').prop('checked', true).trigger('change'); 
+0

謝謝...我試過,但沒有奏效。 – AJay

0

編程改變複選框的選中狀態似乎並沒有引起相應的變化事件。這與Backbone無關,被認爲是jQuery的正常行爲。

因此,要總結:

$('#1').prop('checked', true); - 檢查複選框

$('#1').change(); - 觸發change事件爲複選框

$('#1').prop('checked', true).change(); - 檢查一個複選框,並觸發change事件明確

我已經設置了一個說明你的例子的jsFiddle,查看here

+0

謝謝...我試過$('#1')。prop('checked',true).change();雖然該框由jQuery檢查,但只有手動點擊的複選框被Backbone拾取。 – AJay

+0

Backbone如何聽取複選框的「更改」?你應該有類似於jsFiddle的東西(例如'events:{「change#1」:「checkboxChangeHandler}}) – Lucian

0

我在這方面花了太多時間。我面臨的問題是我是聽上的複選框單擊事件:

events: { 
    'click .some-checkbox-class: function() {...} 
} 

我試過幾個小時的編程方式檢查此複選框在茉莉測試,才知道原來骨幹從未把它撿起來。 (一切都在瀏覽器中工作時,我用它作爲一個利益相關方會)

我改成了這一點,這有同樣的效果相同,我能檢查它在茉莉測試和骨幹把它撿起來像它應該...

events: { 
    'change .some-checkbox-class: function() {...} 
} 

而在茉莉單元測試,我能得到這個威盛Fire:

view.$el.find('.some-checkbox-class').prop('checked', true).change();

相關問題