1

我正在尝试搜索是否存在具有指定用户名的数据属性“datanamed”的任何元素。

代码如下:在 if 语句中,它不能正常工作。

if($('*[datanamed=" + username + "]') === undefined){ 

}
else {

}
4

1 回答 1

2

jQuery 返回一个 jQuery 对象,它不能是undefined,你应该使用length重新调整的 jQuery 对象的属性来代替,还要注意如果username是一个变量,你的代码中的字符串连接是错误的,一个标准的 IDE 可以显示问题(缺少引号):

if ( $('*[datanamed="' + username + '"]' ).length === 0 ) { 
   // doesn't exist
} else {
   // exists
}

请注意,通用选择器*非常昂贵。在过滤之前,它会选择 DOM 中的所有现有元素。如果只有几个元素可以具有此属性,则可以使用.filter()方法:

if ( $('a, div, span').filter('[datanamed="' + username + '"]').length === 0 ) { 
   // doesn't exist
} else {
   // exists
}

PSdata-* :HTML5属性的正确语法是data-*,您的属性无效。应该是data-named

于 2013-05-28T01:27:31.287 回答