Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择同级div jquery的范围_Javascript_Jquery_Html - Fatal编程技术网

Javascript 选择同级div 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

我正在使用jQuery选择器,并且我需要能够分别找到包含美元金额的每个跨度。例如,我想找到并将第一个
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仍然不支持它。