[英]If li contains text, apply change to specific div in the same li, not all
我有一个项目清单,每个清单都有一个按钮和一个价格。 我能够找到显示“选择选项”的按钮,然后将更改应用于另一个div,但是,它会更改所有<li>
的div,而不仅仅是按钮文本出现的那个div。 如何只包含对相关<li>
的更改?
if ($('ul li:contains("Choose Options")')) { $(".p-price").prepend("STARTING AT: "); }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <ul> <li> <em class="p-price">$1.95</em> <div class="ProductActionAdd"> <a href="" class="btn">Add To Cart</a> </div> </li> <li> <em class="p-price">$4.95</em> <div class="ProductActionAdd"> <a href="" class="btn">Choose Options</a> </div> </li> <li> <em class="p-price">$5.95</em> <div class="ProductActionAdd"> <a href="" class="btn">Add To Cart</a> </div> </li> </ul> <script> </script>
上面的脚本确实找到了“选择选项”文本。 但是随后,它向所有.p-price
实例添加了“起始于:”。 我如何只在相同的<li>
更改.p-price
? 这样具有“添加到购物车”按钮的<li>
不会在价格前插入文本吗?
我已经读过有关.each()
, return false
和循环的信息,但是不确定是否我在吠叫正确的树,因为我尝试了各种代码迭代,但均以失败告终,但是涉及到特定的if是否包含,再更改一个div,我找不到任何接近的内容。
否, if
需要:只需在文本前面添加任何可能存在的匹配元素:
$('li:contains("Choose Options") .p-price').
prepend("STARTING AT: ");
$('li:contains("Choose Options") .p-price'). prepend("STARTING AT: ");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <ul> <li> <em class="p-price">$1.95</em> <div class="ProductActionAdd"> <a href="" class="btn">Add To Cart</a> </div> </li> <li> <em class="p-price">$4.95</em> <div class="ProductActionAdd"> <a href="" class="btn">Choose Options</a> </div> </li> <li> <em class="p-price">$5.95</em> <div class="ProductActionAdd"> <a href="" class="btn">Add To Cart</a> </div> </li> </ul>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.