我有大约 1000 个具有相同类名和自定义属性的图像和文本区域。类名分别是 emoticon 和 emoticonlist。自定义属性分别是 emo-tag 和 emo-ascii。
每张图片都有其合作伙伴(文本区域),其自定义属性中的内容完全相同。
示例:
emo-tag = "f-x" // for images
emo-ascii = "f-x" // for textareas
其中 x 代表 0 到 999 之间的数字。
我的脚本毫无问题地捕获了图像属性和我需要的东西。当我尝试获取具有与图像一样的确切属性内容的文本区域的值时,问题就开始了。
这是我的代码:
$(function(){
var json = [];
$('img').each(function(){
var emoimg = $(this).attr("src");
var emoalt = $(this).attr("alt");
var emotag = $(this).attr("emo-tag");
//Does not this supposed to capture the value of this specific textarea?
var emoascii= $('.emoticonlist').attr("emo-ascii",emotag).val();
json.push({
id : emotag,
name : emoalt,
img : emoimg,
content: emoascii
});
});
var s = JSON.stringify(json);
$("#content").after("<div>" + s + "</div>");
});
正如我所说,代码有效,但捕获并插入数组的文本区域只是数组的第一个和所有项目。我怎样才能完成我想要的?
当前输出:
[
{"id":"emo-0","name":"Smiley Face","img":"images/smiley-face.png","content":":)"},
{"id":"emo-1","name":"Big smile","img":"images/big-smile.png","content":":)"},
{"id":"emo-2","name":"Sad face","img":"images/sad-face.png","content":":)"},
...
...
...
]
期望的输出:
[
{"id":"emo-0","name":"Smiley Face","img":"images/smiley-face.png","content":":)"},
{"id":"emo-1","name":"Big smile","img":"images/big-smile.png","content":":D"},
{"id":"emo-2","name":"Sad face","img":"images/sad-face.png","content":":("},
...
...
...
]
最佳答案
使用 $('.emoticonlist').attr("emo-ascii",emotag)
,您设置属性而不是获取属性等于 的元素表情符号
.( http://api.jquery.com/attr/ )
也许尝试更换线路
var emoascii= $('.emoticonlist').attr("emo-ascii",emotag).val();
与
var emoascii= $('.emoticonlist[emo-ascii=' + emotag +']').val();
关于javascript - 使用来自不同 HTML 属性的项目填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34324517/