我正在尝试使用jQuery创建DOM元素。我想使用定义的“输入时”事件来创建此DOM元素。

这有效:

var headerInput = $('<input/>', {
    'class': 'headerInput',
    type: 'text'
});

headerInput.on('input', function() {
    backgroundManager.get('activePlaylist').set('title', $(this).val());
});


这不是:

var headerInput = $('<input/>', {
    'class': 'headerInput',
    type: 'text',
    input: function(){
        backgroundManager.get('activePlaylist').set('title', $(this).val());
    }
});


我想知道为什么?我认为这两种语法是相同的。

最佳答案

它说:


  从jQuery 1.8开始,任何jQuery实例方法(jQuery.fn的方法)都可以用作传递给第二个参数的对象的属性。


但是没有这样的jQuery方法input。并非针对每个事件都存在实例方法。

您可以如下使用on属性:

var headerInput = $('<input/>', {
    'class': 'headerInput',
    type: 'text',
    on: {
        input: function(){
            backgroundManager.get('activePlaylist').set('title', $(this).val());
        }
    }
});


可以在documentation中找到更多信息和示例。

09-25 17:55