1

5 つの td タグを持つテーブルがあります。

<tr id="rows">
    <td x="111" y="1" col="1" row="1">
      <div class="marge-col"></div>
    </td>
    <td x="1" y="1" col="2" row="1">
        <div class="marge-col"></div>
    </td>
    <td x="1" y="1" col="3" row="1">
        <div class="marge-col"></div>
    </td>
    <td x="1" y="1" col="4" row="1">
      <div class="marge-col"></div>
    </td>
    <td x="1" y="1" col="5" row="1">
        <div class="marge-col"></div>
    </td>
</tr>

td タグ (クリックされたdiv.marge-coldiv の親) をクリックしてattr('x')1 つの値を増やしたい (たとえば、first.merge-col親タグ (td) をクリックすると x 属性が増え、値が 2 に変更される) できません。これは私の jquery コードですが、機能していません。div.marge-col最初のコンソールをクリックすると、私が表示されます**11**!!! どうして???(1+1=11???)

$(document).on('click','#rows td .marge-col',function(){
                    console.log('col');
                    $(this).parent().attr('x',$(this).parent().attr('x')+1);
                    console.log($(this).parent().attr('x'));
                });
4

2 に答える 2

1

問題は、+演算子が文字列を連結するだけでなく、数値との加算も実行し、属性値が数値であっても常に強いことです。したがって、「数値」をインクリメントする前に数値であることを確認してください。

$(this).parent().attr('x', function (i,x){
    return parseInt(x) + 1;
});
于 2013-07-28T10:03:52.773 に答える
1

属性は数値ではなく文字列であるため、数値として使用pasrseIntするために使用します。文字列と数値を追加すると、数値は文字列として扱われ、他の文字列に連結されます。

$(this).parent().attr('x',parseInt($(this).parent().attr('x'))+1);
于 2013-07-28T10:02:31.683 に答える