Jquery .next()函数不起作用

时间:2010-12-21 14:50:38

标签: javascript jquery dom

伙计们,我正在尝试做这样的事情 我有两个href和一个文本框 < - > TEXT< +> 所以,当我按下 - 和+时,txt中的值必须增加或减少一个

<!-- <div class="quantity noprint">
   <div  class="subtract" title="Less Quantity"></div><input type="text" id="addToCartQty<%=addProduct.getLongID()%>" value="<%=addProduct.getInteger("ATR_WebMinQuantity",1)/addProduct.getInteger(MCRConstants.DM_ATR_LEGACY_CASE_VENDOR_PACK_SIZE,1) %>" name="ADD_CART_ITEM<>quantity" class="text" maxlength="3" /><div  class="add" title="Add Quantity"></div>

</div> --!>

我正在使用jquery来+和 - 文本框中的值。每当我正确地按+它发生但是 - 它需要TEXT字段名称而不是它的值。任何解决方案都可以使其获取TEXT框的值 使用的Jquery如下:

 $(".quantity .subtract").click(function () {
        var qtyInput = $(this).next('input');
        var qty = parseInt(qtyInput.val());
        if (qty > 1)
            qtyInput.val(qty - 1);

        qtyInput.focus();
        return false;
    });

    $(".quantity .add").click(function () {
        var qtyInput = $(this).prev('input');
        var qty = parseInt(qtyInput.val());
        if (qty >= 0 && (qty + 1 <= 999))
            qtyInput.val(qty + 1);

        qtyInput.focus();
        return false;
    });

5 个答案:

答案 0 :(得分:1)

.next()返回每个所选元素的下一个兄弟。如果将一个选择器传递给该函数,则仅当它与选择器匹配时才返回下一个兄弟。由于您的+和 - 链接是单独的元素,因此它们将具有不同的下一个兄弟。您正在寻找.siblings():

var qtyInput = $(this).siblings('input');

答案 1 :(得分:1)

您可能正在寻找nextAll()功能:http://api.jquery.com/nextAll/

答案 2 :(得分:0)

也许您可以尝试其他类型的查询:

$(".quantity .subtract").click(function () {
    var qtyInput = $(this).closest('.quantity').find('input');
    var qty = parseInt(qtyInput.val());
    if (qty > 1)
        qtyInput.val(qty - 1);

    qtyInput.focus();
    return false;
});

$(".quantity .add").click(function () {
    var qtyInput = $(this).closest('.quantity').find('input');
    var qty = parseInt(qtyInput.val());
    if (qty >= 0 && (qty + 1 <= 999))
        qtyInput.val(qty + 1);

    qtyInput.focus();
    return false;
});

答案 3 :(得分:0)

this有效。我清理了一些不必要的样本属性。

<强>更新

ADD_CART_ITEM<>quantity可能是问题的原因吗? >可以解释为结束标记,并导致奇怪的行为。至少,正如您从我的示例中看到的,您的代码应该可以工作,除非它中存在一些隐藏的问题。这个想法绝对是正确的。

答案 4 :(得分:0)

最后我解决了它,找到下面的jquery

  $(".quantity .subtract").click(function () {
        var qtyInput = $(this).nextAll('a');
        var qtytxt = $(qtyInput).prev('input');
        var qty = qtytxt.val();

        if (qty > 1)
            qtytxt.val(qty - 1);
        qtytxt.focus();
        return false;
    });

我只是为href获得了所有下一个并获得了上一个,因此得到了TEXT的价值,就像我想要的那样。 感谢所有人,干杯;)