$('form :input[type="text"]').live('keyup', function() {
var val = $.trim(this.value); // this.value is faster than $(this).val()
$('form .create-playlist-button').prop('disabled', val.length == 0);
});
演示
在这里,我使用了,.prop()
而不是.attr()
,根据 jQuery doc.prop()
应该使用。我还用于.trim()
从值的开头和结尾删除空格。
关于您的代码
在您的代码中,您使用$('form :input[type="text"]')
了两次,一次用于绑定事件,一次用于获取文本字段的值。但这不是必需的,因为在keyup
事件处理函数中,函数this
将引用事件绑定的那个input
元素。keyup
如果您有时需要出于任何目的多次使用任何选择器,最好将其缓存在一个变量中并重用该变量。举个例子:
var input = $('form :input[type="text"]');
input.on('click', function() {
alert( this.value );
input.addClass('something');
});
如果您使用.on()
而不是.live()
委托事件处理程序会更好,因为.live()
已被弃用。
您可以使用.on()
如下:
$('form').on('keyup', ':input[type="text"]', function() {
var val = $.trim(this.value);
$('form .create-playlist-button').prop('disabled', val.length == 0);
});
笔记
.on()
委托事件处理的语法如下:
$(staticContainer).on( eventName, target, handlerFunction )
在这里,staticContainer
指向在页面加载时属于 DOM 的元素,即它不是动态的,也是target
您要在其上绑定事件的容器。
只是为了更多去这里