jQuery 如果存在 val,则将 class 添加到输入的 parent TD

jQuery append class to parent TD of input if val is present

与标题差不多;我正在尝试将图标添加到 Woocommerce 中的运输选择,因为有时会在页面加载时填写表格。我创建了这个

$(document).ready( function () {
    $('.shipping_method').each( function () {
        $this = $(this).closest('td');
        if ( this.value = 'table_rate_shipping_freship' ) $this.addClass('shipups');        
    });
});

这不起作用,我不确定为什么。 另外一点是,送货方式值可以根据在表单上方输入的信息进行更改。那么像下面这样的东西可以吗?

$(document).ready( function () {
    $('.shipping_method').each( function () {
        $this = $(this).closest('td');
        if ( this.value = 'table_rate_shipping_freship' ) $this.addClass('shipups');        
    });
});

$(document).ready( function () {
    $('.shipping_method').change(function() {
        $this = $(this).closest('td');
        if ( this.value = 'table_rate_shipping_freship' ) $this.addClass('shipups');        
    });
});

我猜不是,因为它基本上是在做以前做过的事情,只是在其中添加了一个 .change() 。任何帮助将不胜感激。

谢谢。

编辑:根据要求,Woocommerce 结帐中与运输方式相关的 HTML:

<tr class="shipping">
    <th>Shipping and Handling</th>
    <td>
            UPS Next Working Day (Free)     <input type="hidden" name="shipping_method[0]" data-index="0" id="shipping_method_0" value="table_rate_shipping_freship" class="shipping_method">
    </td>
</tr>
$("input[value='table_rate_shipping_freship']").parent().addClass('shipups');

试试这个。它会将 class 添加到父 td

发布的答案工作正常, 但是如果你需要一些通用的东西,给你:)

function addCustomClass(target, className, valueToCheck) {
        $("input[value='" + valueToCheck + "']").closest(target).addClass(className);
    }

用法:

addCustomClass('td', 'shipups', 'table_rate_shipping_freship');