调用eval()时attr和prop之间的区别

时间:2017-03-09 10:32:36

标签: 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(obj.prop('clr'));
        obj.html('');
    }

我认为回报是一样的,但事实并非如此,他们回来了:

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

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

" req_subfolder(' /',' _',' 1')"是我想要的,但为什么我不能用prop()得到我想要的东西?是因为我调用了eval()?

1 个答案:

答案 0 :(得分:1)

原因是prop()检索jQuery对象中Element对象的属性,而url不是有效属性。

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

console.log($('div').data('url'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-url="/foobar"></div>