1 回答

TA貢獻1871條經驗 獲得超13個贊
您在樹上走得還不夠遠,無法找到課程。你有:
var quantity = $(".radio_class").parent().find(".quantity_class").val();
這讓你到父<td>你正在尋找的元素是這個的兄弟:
<td class="quantity_class" >...
你想要做的是向上移動一個元素(表格行),然后從那里找到你正在尋找的類,所以使用closest(). 請注意,.quantity_class它沒有值,因此您必須在表格單元格中獲取文本:
var quantity = $(".radio_class").closest('tr').find(".quantity_class").text();
此外,我沒有看到任何帶有max屬性的標記或任何帶有名稱的標記split_quantity。
編輯- 根據與用戶的對話,發現需要進行一些更改。split_quantity首先,需要識別持有的表格,以便它可以在更宏大的標記中定位:
<table id="split_quantity_id">
<tr>
<td><label for="new_quantity">Enter New Quantity</label></td>
<td><input type="number" id="split_quantity" name="split_quantity" min="1" max="6"></td>
<td><button type="submit" value="Save" name="submit_action">Submit</button></td>
<td><button type="submit" value="Cancel" name="submit_action">Cancel</button></td>
</tr>
</table>
然后我們擺脫了onclick="handleClick(this)內聯 JavaScript,轉而讓 jQuery 處理點擊事件。最后我們重構了函數:
$(function() {
var firstRadioValue = 0;
firstRadioValue = $("input[name='line_item']:checked").closest('tr').find('.quantity_class').text();
$('input[name="split_quantity"]').attr('max', firstRadioValue);
var quantity = $(".radio_class").closest('tr').find(".quantity_class").text();
console.log(quantity);
$('table').delegate('.line_item', 'click', function(){
currentRadioValue = $(this).closest('tr').find('.quantity_class').text();
console.log(currentRadioValue);
$('#split_quantity_id').find('[name="split_quantity"]').attr('max', currentRadioValue);
});
});
注意:還發現 OP 使用的是 Smarty 2,它是使用舊版本 jQuery 的舊版本 Smarty,因此.delegate()使用 代替on().
添加回答
舉報