单击复选框后执行操作Backbone

时间:2015-12-11 01:13:06

标签: javascript jquery backbone.js

我基本上想知道用户何时点击了该复选框。如果单击复选框,则我希望div输出一个msg,一旦未选中复选框,则输出另一个msg,但用户必须先检查。复选框是动态创建的。但不知何故,我不知道它的价值。

有两个问题:

  • 单击复选框时,复选标记不会保留
  • 如果单击复选框,则不会在div上输出值

这是一个例子:     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>');

1 个答案:

答案 0 :(得分:0)

有几个问题。

首先:当您从事件处理程序return false(或触发event.preventDefault()时,您可以阻止事件冒泡。这意味着,您自己处理事件并且它永远不会触发通常的操作 - 在这种情况下,这意味着复选框永远不会改变。您应该在复选框处理程序中return true

第二:该值未附加到out div,因为您使用布尔值作为参数调用append函数。在这种情况下最简单的方法可能是将它“转换”为如此字符串:

$('#out').append('' + filter);

第三:虽然听取click事件是一种可行的方法,但可以认为听取change事件更为正确。来自MDN

  

当用户提交对元素值的更改时,会为<input><select><textarea>元素触发更改事件。

这是一个更新的小提琴:http://jsfiddle.net/jzvzgdp4/