输入具有一个名称的所有列表属性值

时间:2012-11-14 10:48:59

标签: javascript jquery html

在我的列表中,我有属性,“data-pic”,“data-audio”和“data-word”......

<li data-audio="sounds/words/black.wav" data-pic="images/words/black.png" data-word="black"></li>

如果我要将“黑色”更改为其他内容,是否可以通过HTML输入新单词来更改所有属性?

6 个答案:

答案 0 :(得分:2)

你可以使用javascript函数..

function writeLi(color){
    return '<li data-audio="sounds/words/'+color+'.wav" data-pic="images/words/'+color+'.png" data-word="'+color+'"></li>'
}

那怎么样?

答案 1 :(得分:2)

使用jQuery的另一种可能更短的方法:

$.each($("li").data(), function(key, value) {
    data[key] = value.replace("black", "white");
});

Example fiddle

您可能希望使用“黑色”以外的占位符值。

答案 2 :(得分:1)

您可以利用属性数组,这只是一个简单的示例,根据您的情况,您可能需要更高级的方法来替换“黑色”而不是像这样的直接替换。

var el = document.getElementById("yourList");
for( var i = 0, max = el.attributes.length; i < max; i++ ){
 if( el.attributes[i].nodeName.indexOf("data") > -1 ){
  el.attributes[i].nodeValue.replace("black","newValue");
 }
}

答案 3 :(得分:1)

这也有效:

var elem = $("li")[0];
var attrs = elem.attributes;
for(var i=0;i<attrs.length;i++) {
   $(elem).attr(attrs[i].nodeName,attrs[i].nodeValue.replace(/black/gi,'white'));                                               
}
​

答案 4 :(得分:0)

你可以这样做:

var myWord = $('li').data('word');
var newWord = 'blue';

$('li').data('word', newWord);

$('li').data('audio', $('li').data('audio').replace(myWord, newWord));
$('li').data('pic', $('li').data('pic').replace(myWord, newWord));

但这将是一个糟糕的方法。最好的是:

$('li').data('word', 'yellow');
$('li').data('audio', 'sounds/words/yellow.wav');
$('li').data('pic', 'images/words/yellow.png');

答案 5 :(得分:-1)

jQuery的:

$('div.#ContainerName li').each(function(a,li) {
  if(this.attr('data-word') == 'black') {
    li.attr('data-word', yourNewValueHere)
    li.attr('data-audio', yourNewValueHere1)
    li.attr('data-pic', yourNewValueHere2)
  }
});

如果需要,使用containername来限制范围(否则它将检查所有LI,这可能太多/太慢/不合需要)