2016-06-01 12 views
0

これは簡単な質問ですが、修正方法はわかりません。私はいくつかの行を持ち、各行に3つの要素、マイナスボタン、数量プラスボタンがあります。すべてが大丈夫でしたが、テーブルの中に行を置くと、ボタンは数量フィールドに影響しません。さらに、レール付きの動的テーブルを作成していますが、HTMLで生成されたコードを書きました。私はそれを試してみましたが、コードは次のとおりです。テーブルのjquery内の複数のプラスとマイナスのボタンが機能しない

$('.add').click(function() { 
 
    if (!isNaN($(this).prev().val())) 
 
    $(this).prev().val(+$(this).prev().val() + 1); 
 
    else 
 
    $(this).prev().val(0); 
 
}); 
 
$('.sub').click(function() { 
 
    if ((!isNaN($(this).next().val())) && ($(this).next().val() > 0)) 
 
    $(this).next().val(+$(this).next().val() - 1); 
 
    else 
 
    $(this).next().val(0); 
 
});
button { 
 
    margin: 4px; 
 
    cursor: pointer; 
 
} 
 
input { 
 
    text-align: center; 
 
    width: 40px; 
 
    margin: 4px; 
 
    color: salmon; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tbody> 
 
    <tr> 
 
     <td> 
 
     <button name="button" type="button" class="sub btn btn-default">-</button> 
 
     </td> 
 
     <td> 
 
     <input name="quantity" type="text" id="1" value="0" class="field" /> 
 
     </td> 
 
     <td> 
 
     <button name="button" type="button" class="add btn btn-default">+</button> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td> 
 
     <button name="button" type="button" class="sub btn btn-default">-</button> 
 
     </td> 
 
     <td> 
 
     <input name="quantity" type="text" id="2" value="0" class="field" /> 
 
     </td> 
 
     <td> 
 
     <button name="button" type="button" class="add btn btn-default">+</button> 
 
     </td> 
 
    </tr> 
 
    </tbody> 
 
</table> 
 

 
<tbody> 
 
    <tr> 
 
    <td> 
 
     <button name="button" type="button" class="sub btn btn-default">-</button> 
 
    </td> 
 
    <td> 
 
     <input name="quantity" type="text" id="1" value="0" class="field" /> 
 
    </td> 
 
    <td> 
 
     <button name="button" type="button" class="add btn btn-default">+</button> 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td> 
 
     <button name="button" type="button" class="sub btn btn-default">-</button> 
 
    </td> 
 
    <td> 
 
     <input name="quantity" type="text" id="2" value="0" class="field" /> 
 
    </td> 
 
    <td> 
 
     <button name="button" type="button" class="add btn btn-default">+</button> 
 
    </td> 
 
    </tr> 
 
</tbody>

+0

.next/.prevコールはちょっと無意味です:私はこの解決策を見つけました。それぞれのボタンは表のセル内にある単一のタグです。つまり、兄弟は存在しません。したがって、next/prevには何も返されません。私はあなたが '量'入力をインクリメントしようとしていると推測していますので、 '$ this.parent()。find( 'input [name = quantity]')'のような何かをする必要があります。 –

+0

さて、問題は、特定の 'quantity'入力と' 'input [name = quantity] ''を選択する必要があるということです。' 'quantity'という名前のすべての入力を選択します。あなたは私を理解していますか? – Giannkas

+0

DOMはツリーです。すべてのノードはその親子を知っており、あなたは自明に上/下/横に移動することができるので、 '$ this.parent.next'はボタン→td(ボタン付き)→td(入力付き)それはちょうど入力を得るためにスポットを「下に」動かすことの問題です。 –

答えて

0

あなたは、右のマーク・B感謝しています。

$(this).parent().prev().children(".field") 

$('.add').click(function() { 
 
    if (!isNaN($(this).parent().prev().children(".field").val())) 
 
    $(this).parent().prev().children(".field").val(+$(this).parent().prev().children(".field").val() + 1); 
 
    else 
 
    $(this).parent().prev().children(".field").val(0); 
 
}); 
 
$('.sub').click(function() { 
 
    if ((!isNaN($(this).parent().next().children(".field").val())) && ($(this).parent().next().children(".field").val() > 0)) 
 
    $(this).parent().next().children(".field").val(+$(this).parent().next().children(".field").val() - 1); 
 
    else 
 
    $(this).parent().next().children(".field").val(0); 
 
});
button { 
 
    margin: 4px; 
 
    cursor: pointer; 
 
} 
 
input { 
 
    text-align: center; 
 
    width: 40px; 
 
    margin: 4px; 
 
    color: salmon; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tbody> 
 
    <tr> 
 
     <td> 
 
     <button name="button" type="button" class="sub btn btn-default">-</button> 
 
     </td> 
 
     <td> 
 
     <input name="quantity" type="text" id="1" value="0" class="field" /> 
 
     </td> 
 
     <td> 
 
     <button name="button" type="button" class="add btn btn-default">+</button> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td> 
 
     <button name="button" type="button" class="sub btn btn-default">-</button> 
 
     </td> 
 
     <td> 
 
     <input name="quantity" type="text" id="2" value="0" class="field" /> 
 
     </td> 
 
     <td> 
 
     <button name="button" type="button" class="add btn btn-default">+</button> 
 
     </td> 
 
    </tr> 
 
    </tbody> 
 
</table>

関連する問題