Jquery-向元素添加数据并通过添加的数据获取元素

Jquery-向元素添加数据并通过添加的数据获取元素,jquery,jquery-data,Jquery,Jquery Data,我可以通过jquery添加的数据获取和元素吗?比如说 函数优先(){ var modal_body=$('.modal body'); 模态体数据('id',4) } 函数第二(){ var modal_body=$('.modalbody[data id=4]'); } 不幸的是,没有 正如您所说,数据属性是由jQuery在内部添加的。实现目标的唯一方法是直接设置属性: function first() { var modal_body = $('.modal-body');

我可以通过jquery添加的数据获取和元素吗?比如说

函数优先(){
var modal_body=$('.modal body');
模态体数据('id',4)
}
函数第二(){
var modal_body=$('.modalbody[data id=4]');
}
不幸的是,没有

正如您所说,数据属性是由jQuery在内部添加的。实现目标的唯一方法是直接设置属性:

   function first() {
     var modal_body = $('.modal-body');
     modal_body.attr('data-id',4)
   }

   function second() {
    var modal_body = $('.modal-body[data-id=4]'); // note: fixed .modalbody to .modal-body
   }
这使得它也可以作为
.data('id')
使用

另一种选择是使用
.filter()

下面是演示

(()=>{
var modal_body=$('div.modal-body');
模态体属性('data-id',4)
log('使用attr:',$('.modal body[data id=4]')找到)。长度);
})();
(() => {
var modal_body=$('span.modal body');
模态体数据('id',4)
console.log('使用过滤器找到:',$('span.modal body')。过滤器(函数(){
返回$(this).data('id')==4;
}).长度);
})();

模态体
模态体
不幸的是,没有

正如您所说,数据属性是由jQuery在内部添加的。实现目标的唯一方法是直接设置属性:

   function first() {
     var modal_body = $('.modal-body');
     modal_body.attr('data-id',4)
   }

   function second() {
    var modal_body = $('.modal-body[data-id=4]'); // note: fixed .modalbody to .modal-body
   }
这使得它也可以作为
.data('id')
使用

另一种选择是使用
.filter()

下面是演示

(()=>{
var modal_body=$('div.modal-body');
模态体属性('data-id',4)
log('使用attr:',$('.modal body[data id=4]')找到)。长度);
})();
(() => {
var modal_body=$('span.modal body');
模态体数据('id',4)
console.log('使用过滤器找到:',$('span.modal body')。过滤器(函数(){
返回$(this).data('id')==4;
}).长度);
})();

模态体

模态体
不是使用单个选择器,而是使用
.filter()

$(“#x”).data(“data”,“a”);
$(“#y”)。数据(“数据”,4);
var x2=$(“div”).filter(函数(){
返回$(this).data(“data”)!=null;
});
变量y4=$(“div”).filter(函数(){
返回$(this).data(“数据”)==4;
});
console.log(“Divs:,$”(“div”).length,“ID:”,x2.length,“ID==4:”,y4.length);
x2.添加类别(“框”);
y4.添加类别(“第4栏”)
div{border:1px solid#CCC;}
.box{边框:1px纯绿色;}
.box4{边框:1px纯红色;}

x
Y

y
不是使用单个选择器,而是使用
.filter()

$(“#x”).data(“data”,“a”);
$(“#y”)。数据(“数据”,4);
var x2=$(“div”).filter(函数(){
返回$(this).data(“data”)!=null;
});
变量y4=$(“div”).filter(函数(){
返回$(this).data(“数据”)==4;
});
console.log(“Divs:,$”(“div”).length,“ID:”,x2.length,“ID==4:”,y4.length);
x2.添加类别(“框”);
y4.添加类别(“第4栏”)
div{border:1px solid#CCC;}
.box{边框:1px纯绿色;}
.box4{边框:1px纯红色;}

x
Y

y
change
$('.modalbody[data id=4]')
$('.modal body[data id=4]')
@AlivetoDie这是一个属性选择器,但标记中没有
数据id
属性,因此这不起作用。@Andreas这表明dup与您先前的评论完全相反-没有数据-属性。@freedomn-m问题的答案正好符合此要求:,@Andreas感谢您的澄清-问题本身并不相同,答案也不相同-但正如您所说,有合适且相关的响应更改
$('.modalbody[data id=4]')
$('.modal body[data id=4]')
@AlivetoDie这是一个属性选择器,但标记中没有
数据id
属性,因此这不起作用。@Andreas这表明dup与您先前的评论完全相反-没有数据-属性。@freedomn-m问题的答案正好符合此要求:,@Andreas感谢您的澄清-问题本身不一样,答案也不一样-但正如您所说,有合适且相关的回答Hanks,几分钟前我发现了文章宽度的过滤功能。谢谢,几分钟前我发现了文章宽度的过滤功能。已将文章标记为重复。
过滤器
功能解决了这个问题。ThanksAlready将该邮件标记为重复。
过滤器
功能解决了这个问题。谢谢