2013-02-27 56 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

相关问题