Javascript 选择同级div jquery的范围
我正在使用jQuery选择器,并且我需要能够分别找到包含美元金额的每个跨度。例如,我想找到并将第一个Javascript 选择同级div jquery的范围,javascript,jquery,html,Javascript,Jquery,Html,我正在使用jQuery选择器,并且我需要能够分别找到包含美元金额的每个跨度。例如,我想找到并将第一个span改为15美元,第三个span改为40美元。在我的示例中,我已经输入了类名,但在我的问题中,我不知道类名,也不知道第二个美元金额的跨度。也可能有更多或更少的div和span 这恰好是一种形式,我发现第一个美元金额如下: $("form[action='/cart'] span:contains('$'):first).replaceWith("$15"); 我有下面的HTML <di
span
改为15美元,第三个span
改为40美元。在我的示例中,我已经输入了类名,但在我的问题中,我不知道类名,也不知道第二个美元金额的跨度。也可能有更多或更少的div和span
这恰好是一种形式,我发现第一个美元金额如下:
$("form[action='/cart'] span:contains('$'):first).replaceWith("$15");
我有下面的HTML
<div class="daddy">
<div class="kid1">
<span>$10</span>
</div>
<div class="kid2">
<span>Nothing to see here</span>
</div>
<div class="kid3">
<span>$20</span>
</div>
</div>
$10
这里没什么可看的
$20
谢谢您可以迭代每个
span
元素,并检查它是否innerHTML
包含$
符号。如果是,则返回所有这些span
s及其位置(index
)
一旦你有了他们的索引
位置,你可以随意修改他们
注意:此解决方案不需要jQuery
示例:您可以将每个匹配的span
的索引
推送到一个数组中。在这种特殊情况下,它看起来像var matchedIndex=[0,2]
。然后,基本上,如果您想更改第一个元素,只需使用匹配索引[0]
var elems=document.getElementsByTagName('span'),
匹配索引=[];
数组.from(elems).forEach(函数(v,i){
如果(/\$/.test(v.innerHTML)){
匹配指数推(i);
}
});
//更改第一个元素的html
元素[MatchedIndex[0]]。innerHTML='$15';
//或者更改最后匹配的元素
elems[matchedIndex[matchedIndex.length-1].innerHTML='$99'代码>
$10
这里没什么可看的
$20
您可以迭代每个span
元素,并检查其innerHTML
是否包含$
符号。如果是,则返回所有这些span
s及其位置(index
)
一旦你有了他们的索引
位置,你可以随意修改他们
注意:此解决方案不需要jQuery
示例:您可以将每个匹配的span
的索引
推送到一个数组中。在这种特殊情况下,它看起来像var matchedIndex=[0,2]
。然后,基本上,如果您想更改第一个元素,只需使用匹配索引[0]
var elems=document.getElementsByTagName('span'),
匹配索引=[];
数组.from(elems).forEach(函数(v,i){
如果(/\$/.test(v.innerHTML)){
匹配指数推(i);
}
});
//更改第一个元素的html
元素[MatchedIndex[0]]。innerHTML='$15';
//或者更改最后匹配的元素
elems[matchedIndex[matchedIndex.length-1].innerHTML='$99'代码>
$10
这里没什么可看的
$20
这能解决您的问题吗
var values = [15, 40];
$("form[action='/cart'] span:contains('$')").each(
function(index, element)
{
element.value = '$'+ values[index];
});
这能解决你的问题吗
var values = [15, 40];
$("form[action='/cart'] span:contains('$')").each(
function(index, element)
{
element.value = '$'+ values[index];
});
我喜欢善良的用户给出的答案,但我想尝试一下。我无法使其更具动态性,因为加法值不相似(第一个值加5,第三个值加倍…)
请点击此处:
你的HTML
<div class="daddy">
<div class="kid1">
<span>$10</span>
</div>
<div class="kid2">
<span>Nothing to see here</span>
</div>
<div class="kid3">
<span>$20</span>
</div>
</div>
迭代:
$('.daddy').children().each(function(i, o) {
var elem = $(o).find('span');
if (elem.html().indexOf('$') === 0) {
elem.html('$' + (parseInt(elem.html().replace('$', '')) + addValues[i]))
}
})
希望这能有所帮助。我喜欢善良的用户给出的答案,但这里是我的尝试。我无法使其更具动态性,因为加法值不相似(第一个值加5,第三个值加倍…)
请点击此处:
你的HTML
<div class="daddy">
<div class="kid1">
<span>$10</span>
</div>
<div class="kid2">
<span>Nothing to see here</span>
</div>
<div class="kid3">
<span>$20</span>
</div>
</div>
迭代:
$('.daddy').children().each(function(i, o) {
var elem = $(o).find('span');
if (elem.html().indexOf('$') === 0) {
elem.html('$' + (parseInt(elem.html().replace('$', '')) + addValues[i]))
}
})
希望这能有所帮助。为什么不创建一个包含要更新的值的数组,并查询包含“$”
的范围并进行相应的更新
var ratesToUpdate=[15,40,70];
变量span=$([action='/cart']span:contains('$');
span.每个函数(索引,span){
$(span).text(“$”+ratesToUpdate[index]);
});代码>
$10
这里没什么可看的
$20
没有什么
没有什么
$50
为什么不创建一个包含要更新的值的数组,并查询包含“$”的span
并相应地进行更新
var ratesToUpdate=[15,40,70];
变量span=$([action='/cart']span:contains('$');
span.每个函数(索引,span){
$(span).text(“$”+ratesToUpdate[index]);
});代码>
$10
这里没什么可看的
$20
没有什么
没有什么
$50
您的问题是不知道一个选择器可以同时选择所有跨距吗?不,我不想选择所有跨距,因为我必须单独更改它们。。我必须选择第一个并更改它,然后用$
金额找到下一个跨度并选择它。。除非我在选择了所有跨距后可以逐步遍历它们?您是否可以先删除:然后使用forEach
?或者可能是第n个类型的n而不是:first
?您的问题是不知道一个选择器可以同时选择所有跨度吗?不,我不想选择所有跨度,因为我必须单独更改它们。。我必须选择第一个并更改它,然后用$
金额找到下一个跨度并选择它。。除非我在选择了所有跨距后可以逐步遍历它们?您是否可以先删除:然后使用forEach
?或者可能是类型的第n个而不是:第一个?我建议使用.indexOf()
而不是.includes()
。IE和我相信Edge仍然不支持它。编辑:好多了。:)@DrewKennedy是个好主意,但是我宁愿使用RegExp
(:而不是.includes()
),而不是.indexOf()
,我建议使用.indexOf()
。IE,我相信Edge仍然不支持它。