我在字符串中有一段html模板,我需要更新。说:
var tpl = "<div><a href="#"><img src="..."></a></div>";
如何在a
标记中添加一个类并返回更新后的字符串?此字符串模板可以完全自定义,因此代码不能依赖于此特定字符串。
如果我这样做:
$(tpl).find('a').addClass('myClass')
然后原始tpl
变量不会受到影响。
如果我这样做:
tpl = $(tpl).find('a').addClass('myClass').html()
然后我只会获得a
代码的内容。
那么正确的方法是什么?
tpl
的内容最终应该是:
<div><a href="#" class="myClass"><img src="..."></a></div>
答案 0 :(得分:3)
您可以使用$.fn.end()返回原始匹配集:
tpl = $(tpl).find('a').addClass('myClass').end().prop('outerHTML');
var tpl = '<div><a href="#"><img src="..."></a></div>';
tpl = $(tpl).find('a').addClass('myClass').end().prop('outerHTML');
console.log(tpl);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
如果您想要返回父jq对象,而不是外部HTML字符串,请删除prop()
:
tpl = $(tpl).find('a').addClass('myClass').end();
答案 1 :(得分:0)
您可以将模板包装在div周围,并在修改后返回到它。
$(function() {
var tmpl = '<div><a href="#"><img src="#"></a></div>';
tmpl = jQuery("<div class=\"outer\">")
.append(tmpl)
.find('a')
.addClass('test')
.parents('.outer')
.html();
alert(tmpl);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
答案 2 :(得分:0)
如果您之前没有&#34; a-href标记&#34;,那么您可以使用: -
tpl = $(tpl).find('a').eq(0).addClass('myClass');
答案 3 :(得分:-1)
你需要:
tpl = $(tpl).find('a').addClass('myClass').attr('href');