所以,我有一个网站,我只有一些类可以用来隔离我想编辑的元素。我需要在html中找到一个包含某个字符串的元素,并替换其中一个兄弟的html。无论如何,这是我得到的代码:
if((".user.info").html().indexOf(vaUID[index]) >= 0) {
$("a.user.info").each(function (index2, obj) {
if($(this).html().indexOf(vaUID[index]) >= 0) {
$(this).siblings('.registered').html('<div class="registered"><a href=http://www.twitch.tv/'+users[index]+ '>currently streaming' + data.stream.game + '</a></div>');
}
});
}
这是起始的html:
<div class="user first">
<div class="element_avatar simple small "><a href="http://www.cnr-clan.com/profile/xxxxxx" data-minitooltip="username"><img src="http://assets-cloud.enjin.com/users/xxxxxx/avatar/small.xxxxxx.png"></a></div>
<div class="info">
<a href="http://www.cnr-clan.com/profile/xxxxxx" class="element_username tag-xxxxxx">username</a>
<span class="nameicons">
<!--Irrelevant Excess Code-->
</span>
<div class="registered">currently browsing</div>
</div>
<div class="clearing"><!-- --></div>
</div>
我最终希望得到什么:
<div class="user first">
<div class="element_avatar simple small "><a href="http://www.cnr-clan.com/profile/xxxxxx" data-minitooltip="username"><img src="http://assets-cloud.enjin.com/users/2219573/avatar/small.xxxxxx.png"></a></div>
<div class="info">
<a href="http://www.cnr-clan.com/profile/xxxxxx" class="element_username tag-xxxxxx">username</a>
<span class="nameicons">
<!--Irrelevant Excess Code-->
</span>
<div class="registered"><a href='http://www.twitch.tv/username'>currently streaming gamename</a></div>
</div>
<div class="clearing"><!-- --></div>
</div>
请记住,我有几个像这样的代码块,具有相同的类。 vaUID [index]的示例值为xxxxxx。
答案 0 :(得分:2)
我建议,基于HTML:
// selects the appropriate elements:
$('.user .info a.element_username')
// filters that collection:
.filter(function(){
// retains only those in which this assessment results as true/truthy
return $.trim($(this).text()) === 'username';
})
// searches amongst those retained-elements' sibling for those that match
// the passed-selector:
.siblings('div.registered')
// wraps the contents of those elements with the supplied HTML:
.wrapInner('<a href="http://www.twitch.tv/username"></a>');
上述filter()
条件仅保留文字内容精确与'username'
字符串(demo to highlight that problem)匹配的元素;要保留那些只包含 字符串的字符串,您可以将filter()
修改为:
return $(this).text().indexOf('username') > -1; // this is case-sensitive
或者:
return $(this).text().toLowerCase().indexOf('username') > -1; // this is case-insensitive
参考文献:
答案 1 :(得分:0)
我发现更简单的方法就是选择使用href属性的特定值。这是我生成的javascript:
$(".user .info a[href='http://www.cnr-clan.com/profile/" + vaUID[index] + "']").siblings('div.registered')
.html('<a href="http://www.twitch.tv/username/' + users[index] + '">streaming ' + data.stream.game + '</a>');