Javascript 调用eval()时attr和prop之间的差异

Javascript 调用eval()时attr和prop之间的差异,javascript,jquery,eval,attr,prop,Javascript,Jquery,Eval,Attr,Prop,我使用jquery-1.12.4库,调用eval()如下: var obj = $(this).find('ul'); if ($(this).prop('class').substring(0,1) == 'c') { eval(obj.attr('url')); console.log(obj.prop('url')) console.log(obj.attr('url')) } else { eval(ob

我使用jquery-1.12.4库,调用eval()如下:

var obj = $(this).find('ul');    
if ($(this).prop('class').substring(0,1) == 'c') {  
        eval(obj.attr('url'));
        console.log(obj.prop('url'))
        console.log(obj.attr('url'))
    } else {
        eval(obj.prop('clr'));
        obj.html('');
    }
我认为回报是一样的,但实际上不是,他们回报了:

console.log(obj.prop('url')) //undefined

console.log(obj.attr('url')) //req_subfolder('/', '_', '1')

“req_子文件夹(“/”、“_”、“1”)是我想要的,但是为什么我不能使用prop()来获得我想要的呢?这是因为我调用了eval()?

这是因为
prop()
检索jQuery对象中元素对象的属性,而
url
不是有效的属性

如果您想在元素上定义自己的数据,我建议您使用
data-*
,如下所示:

var obj = $(this).find('ul');    
if ($(this).prop('class').substring(0,1) == 'c') {  
        eval(obj.attr('url'));
        console.log(obj.prop('url'))
        console.log(obj.attr('url'))
    } else {
        eval(obj.prop('clr'));
        obj.html('');
    }
console.log($('div').data('url')


对不起,我忘了那个部分,已更新,谢谢!谢谢!成功了!试图找出prop/attr/data之间的区别,thx很多!:)没问题,很乐意帮忙。供参考:,