2015-10-19 112 views
2

我打算使用jQuery mobile此一個拿到手機主題http://jsfiddle.net/hhken790/jQuery Mobile的加/減問題

HTML

<input type="button" value="-" class="qtyminus" /> 
<input type="text" name="myInputs[qty][]" value="0" class="qty" /> 
<input type="button" value="+" class="qtyplus" /> 

jQuery的

$("#dynamic").on("click", ".qtyplus", function (e) { 
    e.preventDefault(); 
    var $input = $(this).prev("input"); 
    var currentVal = parseInt($input.val()); 
    if (!isNaN(currentVal)) { 
     $input.val(currentVal + 1); 
    } else { 
     $input.val(0); 
    } 
}); 

然而,加和減去不會在這裏工作。任何想法是什麼造成這個?

+0

是否在Chrome瀏覽器?是否應用了移動主題。對我來說,它不適用於Chrome – Andreas

回答

3

當您添加jQM時,它通過添加容器div和其他DOM元素來增強/樣式許多DOM元素。這意味着您的按鈕和文本輸入不再是DOM中的同胞,prev()將不起作用。相反向上遍歷DOM,然後向下:

var $input = $(this).closest("div#dynamic").find(".qty"); 

e.g:

$("#dynamic").on("click", ".qtyplus, .qtyminus", function (e) { 
    e.preventDefault(); 
    var $input = $(this).closest("div#dynamic").find(".qty"); 
    var currentVal = parseInt($input.val()); 
    if (!isNaN(currentVal)) { 
     $(this).hasClass("qtyplus") ? $input.val(currentVal + 1) : $input.val(currentVal - 1); 
    } else { 
     $input.val(0); 
    } 
}); 

更新FIDDLE

+0

謝謝。這工作。然而,當我通過點擊'新數量+/-。所以新的代碼將更新所有的數量字段,而不僅僅是活動的字段。 – Andreas

+0

已更新FIDDLE,因此您可以在您的動態代碼中看到http://jsfiddle.net/hhken790/3/ – Andreas

+0

@ user3419021,您將控件放置在包含DIV中。只需給這個div一個類,並在遍歷DOM時使用它:http://jsfiddle.net/ezanker/hhken790/4/ – ezanker