Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在jQuery中使用自定义属性获取特定元素_Javascript_Jquery - Fatal编程技术网

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

Javascript 在jQuery中使用自定义属性获取特定元素,javascript,jquery,Javascript,Jquery,下面是一个示例结构,我试图从中获取自定义属性的特定值 <div id="123"></div> <div id="456"></div> <div context="james"></div> 调用$('div').attr('context')将只获取在DOM中找到的第一个div,并检查其值。因为它没有该属性,所以您会得到false。相反,您需要迭代所有div并检查每个div。例如: var found = false;

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

<div id="123"></div>
<div id="456"></div>
<div context="james"></div>
调用
$('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()
调用
$('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()

,只需让jQuery为您进行筛选即可。此外,使用普通的老式香草javascript也可以很容易地做到这一点:

//按属性选择
var theDiv=$(“div[context='james']);
//如果我们这里有东西。。。
if(第四条长度){
log(theDiv.text());
}否则{
log(“不,找不到”);
}
//我们可以在普通javascript中使用相同的选择器。。。
让samediv=document.querySelector(“div[context='james']”);
//然而,在这种情况下,我们访问文本的方式不同。
如果(萨姆迪夫){
log(“在没有jQuery的情况下找到!”,theSameDiv.textContent);
}否则{
console.log(“老鼠…”);
}

第一组
第二节

我是恩里八号,我是只需让jQuery为您进行筛选。此外,使用普通的老式香草javascript也可以很容易地做到这一点:

//按属性选择
var theDiv=$(“div[context='james']);
//如果我们这里有东西。。。
if(第四条长度){
log(theDiv.text());
}否则{
log(“不,找不到”);
}
//我们可以在普通javascript中使用相同的选择器。。。
让samediv=document.querySelector(“div[context='james']”);
//然而,在这种情况下,我们访问文本的方式不同。
如果(萨姆迪夫){
log(“在没有jQuery的情况下找到!”,theSameDiv.textContent);
}否则{
console.log(“老鼠…”);
}

第一组
第二节

我是恩里八号,我是
第一个div没有该属性<代码> HARD()/<代码>不返回一个数组,或者找到具有该属性的元素来获得值,您可以做代码> $'('DIV[Value]).Atter(“上下文”)< /C>。但是您应该考虑在其上放置ID或类以避免属性选择BTW,除非自定义属性以
data-
开头,否则html无效,因此在本例中,最好使用
data context=“james”
。jQuery还特别支持
data-*
属性:第一个div没有该属性<代码> HARD()/<代码>不返回一个数组,或者找到具有该属性的元素来获得值,您可以做代码> $'('DIV[Value]).Atter(“上下文”)< /C>。但是您应该考虑在其上放置ID或类以避免属性选择BTW,除非自定义属性以
data-
开头,否则html无效,因此在本例中,最好使用
data context=“james”
。另外,jQuery还特别支持
数据-*
属性:非常棒的答案,我喜欢使用
的替代方案。filter()
因为它是一个简单的一行:)可能会建议OP使用严格的等式
==
。非常棒的答案,我喜欢使用
的替代方案。filter()
因为它是一个简单的单行程序:)可能会建议OP使用严格相等
==
。这里的问题是,虽然您可以这样做,但属性选择器会有效地执行DOM扫描。浏览器不会按元素的所有属性为元素编制索引,因此当您按属性搜索时,它必须逐级遍历上下文中的每个节点,以查看其是否匹配。这就是为什么出于性能原因,最好使用标记名/类/id选择器,或者如果您被迫使用仅属性选择器,则应缩小执行此操作的上下文范围,以减少必须根据其进行计算的节点数。您完全正确。我在简化,因为我的节点数量非常有限。更改代码以包含div标记名,以限制节点数。很好的观点,值得注意。非常感谢。这里的问题是,虽然可以这样做,但属性选择器可以有效地执行DOM扫描。浏览器不会按元素的所有属性为元素编制索引,因此当您按属性搜索时,它必须逐级遍历上下文中的每个节点,以查看其是否匹配。这就是为什么出于性能原因,最好使用标记名/类/id选择器,或者如果您被迫使用仅属性选择器,则应缩小执行此操作的上下文范围,以减少必须根据其进行计算的节点数。您完全正确。我在简化,因为我的节点数量非常有限。更改代码以包含div标记名,以限制节点数。很好的观点,值得注意。非常感谢。