是否可以使用JS变量通过jQuery attr()函数设置自定义属性

时间:2011-09-21 08:51:19

标签: jquery custom-attributes

我正在使用jquery 1.5和html4标准  我正在尝试设置我通过javascript变量获取的自定义属性,但它没有设置up.code示例:

var attname="list1"; // this is changed on every call of the function where it is defined.    
var attvalue="b,c,d"; // this also changed.  
jQuery('#div1').attr({attname:attvalue});

但它将attname视为字符串本身而非变量。 还有其他选项,比如使用data(),prop(),但HTML5和jquery 1.6支持它们,这对我来说是不可能的。另一个问题是无法在服务器端设置数据以便同步和使用客户端通过jquery data()。因为它们在语法上是差异的。 如果有其他方式请建议 感谢。

5 个答案:

答案 0 :(得分:24)

我猜你应该用这个

jQuery('#div').attr(attname,attvalue);

答案 1 :(得分:12)

是的,但请先使用data-前缀以避免冲突

$('elm').attr('data-'+attname,attvalue);

使用data-前缀不需要HTML5。

答案 2 :(得分:6)

是的,你可以添加你想要的任何属性,但要小心:

$('#foobar').attr('foo','bar'); 

http://jsfiddle.net/each/rnnfk/ - 查看此演示

答案 3 :(得分:3)

<div data-test="lala">asdf</div>

alert($('div').data('test'));
var t = 'data-test2';
var v = 'hiho';
$('div').attr(t,v);
alert($('div').data('test2'));
alert($('div').attr('data-test2'));

这对我有用:http://jsfiddle.net/r7uQ8/ 在jquery 1.4.4上测试

答案 4 :(得分:1)

方括号表示法是你的朋友:

var attname = "haha";
jQuery('#div')[0][attname] = "foo";
alert(jQuery('#div')[0][attname]);

http://jsfiddle.net/KJBHq/