Jquery $this属性选择器是否包含单词

Jquery if $this attribute selector contains a word

本文关键字:是否 包含单 选择器 属性 this Jquery      更新时间:2023-09-26

是否可以在$(this)上使用jquery属性包含选择器?我找不到任何例子。我正在尝试查看输入字段是否包含某个单词。

$("#form input").keyup(function() {
    if ($(this).filter( "[name~='someWord']" )) {
        console.log('yes');
    }
});

代码对所有输入返回 yes,即使它们不包含 someWord

你必须在这个上下文中使用.is()

if($(this).is( "[name~='someWord']" )) {
    console.log('yes');
}

因为.filter()会返回一个jquery对象(元素集合),而这永远不会false

您可以在事件处理程序中使用 Vanilla JS 更好地做到这一点

$("#form input").keyup(function(evt) {
    if (evt.currentTarget.name.indexOf('someWord') > -1) {
        console.log('yes');
    }
});

这将检查实际 DOM 元素的 name 属性,并且不会增加 jquery 包装器的开销。

尝试

$("#form input").keyup(function() {
    if ($(this).filter("[name~='someWord']").length) {
        console.log('yes');
    }
});

或更好:

$("#form input").keyup(function() {
    if ($(this).is("[name~='someWord']")) {
        console.log('yes');
    }
});