-3

我正在尝试构建一个从四个不同复选框调用的通用函数。当复选框被选中时,它应该从复选框附近的按钮中删除禁用的属性。

我的按钮都有这样的不同类

按钮 1:class="button primary pie list-buy-button list_buy_button_1903"

按钮 2:class="button primary pie list-buy-button list_buy_button_1901"

按钮 3:class="button primary pie list-buy-button list_buy_button_1899"

按钮 4:class="button primary pie list-buy-button list_buy_button_1897"

首先我将事件绑定到我的复选框

$(".avtalsbox").each(function()
{
    $(this).click(function()
    { 
      chbclickeventhandler(this);
    });
});

然后我用这个函数处理它..这是我遇到问题的地方

我尝试了很多解决方案,但没有人工作?

function chbclickeventhandler(thebox)
{

    if (thebox.checked) {

    //SOLUTION 1
    var button = $(thebox).closest("[class*='buy_button']");    
    $(button).removeAttr("disabled");

    //SOLUTION 2
    var button = $(thebox).parent().children("[class*='buy_button']");    
    $(button ).removeAttr("disabled"); 
    }
}

这就是我的 html 的样子

<div class="buyonly boxhighlight varmepaket1">
<div width="100%" style="float:right;"> 
<!---köpknapp--->
<form class="product_form" action="/shoppingcart/increase_product_count/" method="post">
  <input type="hidden" name="quantity" value="1" id="quantity">
  <span class="button-container pie">
  <!-- THIS IS THE INPUT I WANT TO REMOVE DISABLED FROM ASWELL AS ADD IT -->
    <input class="button primary  pie list-buy-button list_buy_button_1903" type="submit" value="Beställ idag!" disabled="">     
  </span>
  <!---crap--->
  <input type="hidden" name="product_id" value="1903">
  <input type="hidden" name="article_number" value="varmepaket2">      
</form>
<!---köpknapp END---> 
</div>

<div width="" style="float:right;">
<a href="#" onclick="eb_klarna_sum=14990; $('body').find('#klarna_payment').click(); return false;">
  <img class="symbol" src="/layouts/focus/klarna_symbol.png"> Dela upp betalningen från xxx  kr/mån</a></div>

 <div style="float:left;"><input type="checkbox" class="avtalsbox" name="godkannavtalet" value="varmepaket1">Jag godkänner avtalet!</div>
</div>
4

3 回答 3

3

您的用法closest不正确,请尝试以下方式:如果选择器中有匹配项,则 Closest 只会将您带到父级或自身。因此,这里使用closest该类到达父 div 并在.buyonly其中找到按钮。

$(".avtalsbox").change(chbclickeventhandler);

function chbclickeventhandler() {
    if (this.checked) {
    //SOLUTION 1
        var button = $(this).closest(".buyonly").find("[class*='buy_button']");
        $(button).prop("disabled", false);
    }
}

小提琴

如果您正在寻找切换按钮,那么您可以这样做:

$(".avtalsbox").change(chbclickeventhandler);

function chbclickeventhandler() {
    $(this)
        .closest(".buyonly")
        .find("[class*='buy_button']")
        .prop("disabled", !this.checked);

}
于 2013-09-04T21:43:21.287 回答
2

在您的情况下,复选框不是按钮的子级,因此您不能使用最接近的!

于 2013-09-04T21:34:53.380 回答
1

利用

 $(thebox).closest('.product_form').find(["class*='buy_button']");
于 2013-09-04T21:46:58.480 回答