我基本上想知道用户何时点击了该复选框。如果单击复选框,则我希望div输出一个msg,一旦未选中复选框,则输出另一个msg,但用户必须先检查。复选框是动态创建的。但不知何故,我不知道它的价值。
有两个问题:
这是一个例子: http://jsfiddle.net/8GjdS/103/
代码:
var myView = Backbone.View.extend({
events: {
'click #check': 'checkboxHandler'
},
initialize: function() {
_.bindAll(this, 'checkboxHandler');
},
checkboxHandler: function(e) {
var filter = $('#check').is(':checked');
console.log(filter);
$('#out').append(filter);
return false;
},
});
var v = new myView({el: '#view-goes-here'});
v.render();
$('#view-goes-here').append('<div class=divs" align="right"><input id="check" type="checkbox" value=""><font size="4">check</font></input></div>');
答案 0 :(得分:0)
有几个问题。
首先:当您从事件处理程序return false
(或触发event.preventDefault()
时,您可以阻止事件冒泡。这意味着,您自己处理事件并且它永远不会触发通常的操作 - 在这种情况下,这意味着复选框永远不会改变。您应该在复选框处理程序中return true
。
第二:该值未附加到out
div,因为您使用布尔值作为参数调用append函数。在这种情况下最简单的方法可能是将它“转换”为如此字符串:
$('#out').append('' + filter);
第三:虽然听取click
事件是一种可行的方法,但可以认为听取change
事件更为正确。来自MDN:
当用户提交对元素值的更改时,会为
<input>
,<select>
和<textarea>
元素触发更改事件。
这是一个更新的小提琴:http://jsfiddle.net/jzvzgdp4/