2013-02-27 95 views
1
@$el.html(@template()) 
@$('an_input').val('2')    # ---> this works 
@$('selector').prop('checked', true) # ---> does not work 


@$el.html(@template()) 
@$('an_input').val('2')     # ---> this works 
setTimeout(-> 
    @$('selector').prop('checked', true) # ---> works! 
    1000 
) 

任何人都知道爲什麼?爲什麼複選框需要超時在骨幹中檢查

小提琴:http://jsfiddle.net/EC49U/

+0

可能是因爲javascript的異步性質。成功加載模板後,您需要添加回調。 – Stevo 2013-02-27 15:21:13

+0

看到這會很奇怪,因爲我可以爲輸入設置值,不是嗎? – juanpastas 2013-02-27 15:23:29

+0

的確,這有點奇怪,也許jquery對DOM和prop的處理方式不同。不過,我仍然認爲它是一個異步問題。用回調重新計算你的代碼,看看會發生什麼。 – Stevo 2013-02-27 15:29:52

回答

0

它在正常情況下工作。在你的情況下,選擇器直到1秒後才能找到你要定位的元素。 這裏有沒有超時工作示例: http://jsfiddle.net/gouegd/zXGVD/

注意我用的檢查=「檢查」,而不是真正的這是更多的HTML符合我的想法。

$('#car').prop('checked', "checked") 
+0

我不能看到你在你的jsfiddle例子中使用Backbone? – 2013-02-27 15:42:27

+0

骨幹如何在OP的代碼中做出任何改變? – Greg 2013-02-27 15:59:46

+0

jQuery將'(「checked」,true)'轉換爲'checked =「checked」' – Ven 2013-02-27 16:34:35

相關問題