var icons = $(".IT_Icon").text().trim().split(",");
在上面,元素文本的部分(逗号之间)被分解并存储在数组中。如果我想对源列表中的项目进行换行或追加或执行任何操作,我该怎么做?
例如:
之前:
[cat, dog, mouse, elephant, lion, bird]
之后:
<img src="cat"/>, <img src="dog"/>, <img src="mouse"/>, <img src="elephant"/>, <img src="lion"/>, <img src="bird"/>
第二个想法,我不能只有一个正则表达式找到列表的“部分”,逗号之间有什么,并用我需要的东西补充它?无论是包装还是替换?
ANSWER
这就是我最终的结果:
$(".IT_badge").each(function () {
var badges = $(this).text().trim().split(",");
$(this).html("");
for (i = 0; badges.length > i; i++) {
$(this).append($("<img/>").attr("src", 'IT_Badges/' + badges[i] + '.png'));
if (!(badges.length === i+1)) {
$(this).append(", ");
}
}
});
答案 0 :(得分:4)
我最喜欢的方法就是:
str = '<img src="' + ary.join('"/><img src="') + '"/>';
将为您提供单个图像标记字符串。如果你想在jQuery中做这件事,比如:
(".IT_Icon").each(function(){
var $this = $(this);
$this.html('<img src="' + $this.text() + '"/>');
});
你想要一个字符串吗?修改HTML?
答案 1 :(得分:1)
我建议您使用Array.prototype.map
,如果您的浏览器不支持,可以轻松创建。{/ p>
if (!Array.prototype.map)
{
Array.prototype.map = function(fun /*, thisp */)
{
"use strict";
if (this === void 0 || this === null)
throw new TypeError();
var t = Object(this);
var len = t.length >>> 0;
if (typeof fun !== "function")
throw new TypeError();
var res = new Array(len);
var thisp = arguments[1];
for (var i = 0; i < len; i++)
{
if (i in t)
res[i] = fun.call(thisp, t[i], i, t);
}
return res;
};
}
然后你可以像这样使用它:
var newIcons = icons.map(function(v) {
return "<img src='" + v + ".png' />";
});
答案 2 :(得分:1)
您可以使用jQuery.map()功能:
var s1 = [cat, dog, mouse, elephant, lion, bird];
var s2 = $.map(s1, function(x) {
var img = new Image();
img.src = x;
return img;
});
s2; // => [<img src="cat"/>, <img src="dog"/>, ..., <img src="bird"/>];
答案 3 :(得分:0)
这样的东西?
var icons = $(".IT_Icon").text().trim().split(",");
$.each(icons, function(i, e){
$("#container").append($("<img/>", { src: $.trim(e) }));
});