如何修改jQuery选择器,排除class为item的文本输入框?
解决jQuery文本输入框事件绑定的选择器问题
你碰到的这个问题其实挺常见的——jQuery并不支持[class!=item]这种属性选择器语法,这种写法是非标准的,所以才会失效。要实现“仅对class不等于item的文本输入框绑定事件”的需求,我们可以用jQuery的:not()伪类选择器,这是官方推荐且可靠的方式。
正确的选择器写法
把原来的选择器替换成input[type=text]:not(.item),它的作用很明确:匹配所有类型为text的<input>元素,同时排除带有item类的元素。
修改后的完整代码
$(document) .on('focus', 'input[type=text]:not(.item)', function() { // 合并css调用,让代码更简洁 $('.footer').css({ 'position': 'absolute', 'bottom': '' }); }) .on('blur', 'input[type=text]:not(.item)', function() { $('.footer').css({ 'position': 'fixed', 'bottom': '0' }); });
小优化说明
我顺便把你代码里两次单独调用.css()的操作合并成了一次传递配置对象的写法,这样既保持了功能不变,还让代码更简洁高效,你可以参考这个小技巧~
内容的提问来源于stack exchange,提问作者sqlchild
相关产品推荐
相关产品推荐

