Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用JS变量通过jQuery attr()函数设置自定义属性_Jquery_Custom Attributes - Fatal编程技术网

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

是否可以使用JS变量通过jQuery attr()函数设置自定义属性,jquery,custom-attributes,Jquery,Custom Attributes,我正在使用jquery 1.5和html4标准。 我试图设置通过javascript变量获得的自定义属性,但它没有设置。代码示例: 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});

我正在使用jquery 1.5和html4标准。
我试图设置通过javascript变量获得的自定义属性,但它没有设置。代码示例:

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()使用。因为它们在语法上是不同的。 如果有其他方法,请建议
谢谢。

我想你应该用这个

jQuery('#div').attr(attname,attvalue);
asdf
警报($('div')。数据('test'));
var t='data-test2';
var v=‘hiho’;
$('div').attr(t,v);
警报($('div')。数据('test2'));
警报($('div').attr('data-test2'));
这一切都对我有用:
在jquery 1.4.4上测试,方括号表示法是您的朋友:

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

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

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

-请查看此演示

是,但请先使用
数据-
前缀,以避免冲突

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

使用
data-
prefix不需要HTML5。

如果你读了他的问题,很肯定他不想使用数据属性。@Brogrammer:Hm我是这样理解的,他的意思是他不能使用数据,因为他认为数据只适用于jquery 1.6。所以我指出它们在1.4.4中也起作用。在我看来,使用它们会更优雅。卡里姆79感谢edit@stat,感谢我指出了语法错误。Brogrammer、Usman、Andy感谢所有人提供的信息,每一个人在某个方面都是正确的。
$('elm').attr('data-'+attname,attvalue);