如何将自动值放到具有相同类的元素,计数值

时间:2015-10-20 01:45:11

标签: javascript jquery html

我的这个html元素具有相同的类,具有不同的值。

<div>
<p>1</p>
<input type="hidden" name="qs-ordered[]" class="qs_cntss" value="0">
</div>
<div>
<p>2</p>
<input type="hidden" name="qs-ordered[]" class="qs_cntss" value="0">
</div>
<div>
<p>3</p>
<input type="hidden" name="qs-ordered[]" class="qs_cntss" value="0">
</div>
<div>
<p>4</p>
<input type="hidden" name="qs-ordered[]" class="qs_cntss" value="0">
</div>
...
<div>
<p>7</p>
<input type="hidden" name="qs-ordered[]" class="qs_cntss" value="0">
</div>

现在我想通过在调用函数时计算其值来重新赋值。这是我目前的代码:

jQuery("div").click(function(){
        var cnt = 1;
        jQuery('.qs_cntss').each(function(){
            jQuery('.qs_cntss').val(cnt);
            cnt++;
        });
    });


jQuery(function() {
    jQuery( "div" ).sortable({
      revert: true
    });
    jQuery( "div" ).disableSelection();
  });

但所有.qs_cntss值的问题都是7 ..但我希望它是第一个订单:1,2,3,4..7 ... like

<div>
<p>1</p>
<input type="hidden" name="qs-ordered[]" class="qs_cntss" value="1">
</div>
<div>
<p>2</p>
<input type="hidden" name="qs-ordered[]" class="qs_cntss" value="2">
</div>
<div>
<p>3</p>
<input type="hidden" name="qs-ordered[]" class="qs_cntss" value="3">
</div>
<div>
<p>4</p>
<input type="hidden" name="qs-ordered[]" class="qs_cntss" value="4">
</div>
...
<div>
<p>7</p>
<input type="hidden" name="qs-ordered[]" class="qs_cntss" value="7">
</div>

我有这个想法,因为我希望它适用于此Moving node Div Up and Down using Javascript/Jqueryhttps://jqueryui.com/draggable/#sortable ..因此每当我拖动div时,它会根据其顺序更改所有qs_cntss值..有可能吗?

2 个答案:

答案 0 :(得分:1)

所有人都是7的原因是你设置jQuery('.qs_cntss').val(cnt);

尝试使用this: -

   jQuery("div").click(function(){
        var cnt = 1;
        jQuery('.qs_cntss').each(function(){
            jQuery(this).val(cnt);
            cnt++;
        });
    });

答案 1 :(得分:0)

你的问题是这行代码:

jQuery('.qs_cntss').val(cnt);

您可以在循环的每次迭代中执行此操作。请记住,选择器.qs_cntss的目标是具有此类的所有元素,因此在循环完成后将所有元素设置为7是有意义的。要解决此问题,只需将其替换为this

jQuery(this).val(cnt);