【问题标题】:Foreach Loop with Jquery Variable带有 Jquery 变量的 Foreach 循环
【发布时间】:2018-06-16 11:53:19
【问题描述】:

我有以下代码:

HTML:

<div class="single-count_contain">
<div class="less"><img src="img/single_arrow_left.png"></div>
<div class="theCount">1</div>
<div class="add"><img src="img/single_arrow_right.png"></div>
</div>

JS:

var counter = 1;

$(".add").click(function(){

counter++;

$(this).closest(".single-count_contain").find(".theCount").text(counter);

});


$(".less").click(function(){

 counter--;

$(this).closest(".single-count_contain").find(".theCount").text(counter);

});  

这按预期工作,增加和减少我的计数器变量。但我需要在 foreach 循环中使用它。

我怎样才能有相同的变量,但每个计数器生成的结果不同,但 foreach 循环?

谢谢!

【问题讨论】:

  • 不清楚你要达到什么目的
  • 您是否有多个 single-count_contain 元素并希望单独更新每个元素的计数?
  • 是的,那个!我想单独更新每一个,因为我有很多具有相同的信息和相同的变量。当我尝试更新其他信息时,信息从上次更新的位置开始。

标签: javascript php jquery foreach counter


【解决方案1】:

鉴于 count 元素将始终包含一个值,最简单的方法是读取 count 元素的文本,将其解析为整数并更新它。

例如

$(".add").click(function() {

  var $count = $(this).closest(".single-count_contain").find(".theCount");
  $count.text(parseInt($count.text()) + 1);

});

$(".less").click(function() {

  var $count = $(this).closest(".single-count_contain").find(".theCount");
  $count.text(parseInt($count.text()) - 1);

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="single-count_contain">
  <div class="less"><img src="img/single_arrow_left.png"></div>
  <div class="theCount">1</div>
  <div class="add"><img src="img/single_arrow_right.png"></div>
</div>

<div class="single-count_contain">
  <div class="less"><img src="img/single_arrow_left.png"></div>
  <div class="theCount">1</div>
  <div class="add"><img src="img/single_arrow_right.png"></div>
</div>

您也可以使用.siblings() 函数来选择计数元素。

例如

var $count = $(this).siblings(".theCount");

更新

要更新数据计数器值,您可以这样做:

var count = parseInt($count.text()) + 1;
$count.text(count).data("counter", count);

另一种解决方案

$(".single-count_contain").each(function() {
  var counter = 1;
  
  $(this).on("click", ".less,.add", function() {
    if ($(this).hasClass("less"))
      counter--;
    else
      counter++;

    $(this).siblings(".theCount").text(counter).data("counter", counter);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="single-count_contain">
  <div class="less"><img src="img/single_arrow_left.png"></div>
  <div class="theCount">1</div>
  <div class="add"><img src="img/single_arrow_right.png"></div>
</div>

<div class="single-count_contain">
  <div class="less"><img src="img/single_arrow_left.png"></div>
  <div class="theCount">1</div>
  <div class="add"><img src="img/single_arrow_right.png"></div>
</div>

【讨论】:

  • 谢谢!这样就可以了:)。
  • 另一个问题,如果可能的话,我想在同一个 div 中也有一个数据计数器。像“
    1
    。我如何在更新另一个数据计数器的同时更新这个数据计数器?谢谢。最好的问候!
  • 用解决方案更新了答案。
  • 感谢您提供的所有解决方案,你太棒了! :)。我保证只有最后一个问题。可以说有
    1
    10
    ,每次我增加或减少,我也得到了价值变化。就像 10 - 20 - 30 - 40 一样,如果我递减,则有 30 - 20 - 10。按照你的解释,我可以改变这个值,但如果我得到 20,之后我会得到 40,之后得到 80。我不能只通过保持第一个值来增加。任何的想法? :)
  • 不确定我是否完全理解,但听起来value 对于每个计数器来说都是恒定的?如果是这样,您可以获取 .value 元素的文本,对其进行 parseInt 并按此递增/递减。
猜你喜欢
  • 1970-01-01
  • 2018-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-27
  • 2023-04-06
相关资源
最近更新 更多