web-dev-qa-db-ja.com

JS変数を使用してjQuery attr()関数でカスタム属性を設定することは可能ですか

私は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()によるクライアント側。構文的に異なるためです。他の方法がある場合は、ありがとうを提案してください。

14
rain

あなたはこれを使うべきだと思います

jQuery('#div').attr(attname,attvalue);
25
Sedat Başar

はい、ただし衝突を避けるために前にdata-接頭辞を使用してください

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

data-接頭辞の使用には、HTML5は必要ありません。

12
Muhammad Usman

はい、必要な属性を追加できます。注意してください。

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

http://jsfiddle.net/each/rnnfk/ -このデモを確認してください

7
daryl
<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でテスト済み

3
Andy

角括弧表記はあなたの友達です:

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

http://jsfiddle.net/KJBHq/

1
karim79