jQuery :not() 选择器不起作用

jQuery :not() Selector doesn't work

我想从序列化中排除带有空值的选择。

我正在尝试这样实现:

    var form = $('#myForm');
    var str = $(':not(select[value=""])', form).serialize();

没有错误,结果是整个表格。 not() 方法给出相同的结果。

可能有什么问题?

编辑: 被列为可能与我的重复的问题询问了从序列化中排除空字段的可能实现,而我的声明 not() Selector 没有工作,询问为什么以及与上述解决方案不同的问题。

过滤元素属性 value 等于空字符串的元素,而不是当前值为空字符串的元素。


对于当前值为空字符串的过滤元素,使用 filter() 方法。

var str = $(':input', form).filter(function(){
   return this.value.trim() != '';
}).serialize();


更新: 如果你只是想避免空 select 标签,那么就这样做吧。

var str = $(':input', form).filter(function(){
   return !($(this).is('select') && this.value.trim() == '');
}).serialize();