在jQuery中使用自定义属性获取特定元素

时间:2018-11-14 22:46:54

标签: javascript jquery

下面是一个示例结构,我正试图从中获取自定义属性的特定值

<div id="123"></div>
<div id="456"></div>
<div context="james"></div>

以下是我尝试获取的方式,但始终返回false。

if ( $('div').attr('context') == 'james' ) {
    alert("yes");
} else {
    alert("no");
}

2 个答案:

答案 0 :(得分:3)

$('div').attr('context')的调用只会获取DOM中找到的第一个div并检查其值。由于它没有该属性,因此您得到false。相反,您将需要遍历所有div并检查每个div。例如:

var found = false;
$('div').each(function( ) {
  if($(this).attr('context') === 'james') found = true;
});
if(found) alert("yes");
else alert("no")

您也可以使用.filter

if( $('div').filter(function(){ return $(this).attr('context') === 'james' }).length )
    alert("yes");
else 
    alert("no");

注意:如果使用data-context="james",则应使用.data()方法,而不是.attr()

答案 1 :(得分:0)

只需让jQuery为您过滤即可。另外,可以使用普通的旧式javascript轻松完成此操作:

cd android; ./gradlew assembleRelease
// Select by attribute
var theDiv = $("div[context='james']");

// If we have something here...
if(theDiv.length){
  console.log(theDiv.text() );
} else {
  console.log("Nope, not found.");
}

// We can use this same selector with plain javascript...
let theSameDiv = document.querySelector("div[context='james']");

// In this event, however, we access the text differently.
if(theSameDiv){
  console.log("Found without jQuery!", theSameDiv.textContent);
} else {
  console.log("Rats...");
}