从同一个班级的跨区获取文本

时间:2019-04-12 19:49:00

标签: jquery

我有5个跨度,可能更多,全都属于.price类。

在阅读Jquery文档时,我发现最好的方法是使用map函数。像这样:

var prices = $(".price")
             .map(function () {
               return this.text;
             }).get().join();
  

我需要一个价格清单,所以之后我可以做类似(注意   负20部分):

$('.price').text(function (index) {
                            return "S/ " + prices[index]-20;
                        });

但是当我提醒prices时,我得到了一个空窗口。

html

<span class="price price_50">50</span>
<span class="price price_100">90</span>
<span class="price price_200">120</span>
<span class="price price_300">140</span>
<span class="price price_500">150</span>

3 个答案:

答案 0 :(得分:1)

内部映射this引用DOM,并且没有任何text属性。因此,将其转换为jQuery对象并使用text()方法获取文本内容,或从DOM对象获取textContent属性。

var prices = $(".price")
  .map(function() {
    return $(this).text();
  }).get().join();

console.log(prices)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<span class="price price_50">1</span>
<span class="price price_100">2</span>
<span class="price price_200">3</span>
<span class="price price_300">4</span>
<span class="price price_500">5</span>

答案 1 :(得分:1)

Vanilla javascript使用innerText,这就是jQuery参考中的text()

var prices = $(".price")
  .map(function() {
    return this.innerText;
  }).get().join();

console.log(prices)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<span class="price price_50">1</span>
<span class="price price_100">2</span>
<span class="price price_200">3</span>
<span class="price price_300">4</span>
<span class="price price_500">5</span>

答案 2 :(得分:0)

每个范围内都需要一些内容。

<span class="price price_50">50</span>
<span class="price price_100">100</span>
<span class="price price_200">200</span>
<span class="price price_300">300</span>
<span class="price price_500">500</span>
<p id="list_price"></p>

 $( "p" )
  .append( $( ".price" ).map(function() {
       return $( this ).text();
        })
 .get()
 .join( ", " ) );