调用 eval() 时 attr 和 prop 的区别
Difference between attr and prop when call eval()
我使用 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('');
}
我认为 return 会是一样的,但实际上不是,他们 returned:
console.log(obj.prop('url')) //undefined
console.log(obj.attr('url')) //req_subfolder('/', '_', '1')
"req_subfolder('/', '_', '1')"是我想要得到的,但是为什么我不能用prop()得到我想要的呢?是因为我调用了eval()吗?
这是因为 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>
我使用 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('');
}
我认为 return 会是一样的,但实际上不是,他们 returned:
console.log(obj.prop('url')) //undefined
console.log(obj.attr('url')) //req_subfolder('/', '_', '1')
"req_subfolder('/', '_', '1')"是我想要得到的,但是为什么我不能用prop()得到我想要的呢?是因为我调用了eval()吗?
这是因为 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>