1

这是工作代码

$('td.transaction_partner_name_td4').css('border-bottom', '1px solid #FF0000');

它会更改此类的边框颜色html <td class='transaction_partner_name_td4'></td>

但我需要这样html使用

<td class='transaction_partner_name_td<?php echo $row_number;?>'>
<input type='text' name='transaction_partner_name[]' id='transaction_partner_name<?php echo $row_number;?>'>
</td>

$row_number可能是 1, 2 ... 30。所以transaction_partner_name_td可能是transaction_partner_name_td1,2...30

肯定需要在改变ajax之后function(data, success)<td class='transaction_partner_name_td<?php echo $row_number;?>'>td

json data值例如:

data[0]值为 1

data[1]值为 3

data[2]值为 4

我可以input像这样更改/设置值:

<?php while ( $counter < ($counter_maximum) ){ ?>
$('#transaction_partner_name<?php echo $counter;?>').val(data[<?php echo $counter;?>]);
<?php $counter++; } ?>

以同样的方式尝试更改/设置边框颜色。

试过了

<?php while ( $counter < ($counter_maximum) ){ ?>
$('td.transaction_partner_name_td(data[<?php echo $counter;?>])').css('border-bottom', '1px solid #FF0000');
<?php $counter++; } ?>

但这不起作用。用查看源代码看这样$('td.transaction_partner_name_td(data[1])').css('border-bottom', '1px solid #FF0000');

可以添加json data[0]td.transaction_partner_name_td?或者可能是其他解决方案?

解决方案

感谢 TJ Crowder 的建议,目前可以使用此代码(可能后者会遇到一些问题,但目前可以根据需要使用):

<?php while ( $counter < ($counter_maximum) ){ ?>
$("#transaction_partner_name" + data[<?php echo $counter;?>]).closest("td.transaction_partner_name_td").css('border-bottom', '1px solid #FF0000');
<?php $counter++; } ?>
4

2 回答 2

2

我认为可能有更好的方法来完全处理这种结构,但是对你所拥有的允许你瞄准这些细胞的最小变化是这样的:

HTML (请注意,类上不再有行 ID)

<td class='transaction_partner_name_td'>
   <input type='text' 
          name='transaction_partner_name[]' 
          id='transaction_partner_name<?php echo $row_number;?>'>
</td>

JavaScript:

// Access *all* of them
var allTransationPartnerCells = $("td.vtransaction_partner_name_td");

// Or access the one for a specific row
var justOneCell = $("#transaction_partner_name" + someRowNumber)
                                  .closest("td.transaction_partner_name_td");

或者在最后一个中,您可能甚至不需要该课程:

// Access the one for a specific row
var justOneCell = $("#transaction_partner_name" + someRowNumber)
                                  .closest("td");
于 2013-09-22T14:33:42.263 回答
1

如果这data是一个行号数组,您可以过滤输入并选择它们的父td元素:

$('input[name="transaction_partner_name[]"]').filter(function() {
    // Check existence of the numbers
    var n = + this.id.replace('transaction_partner_name', '');
    return $.inArray(n, data) > -1;
}).parent('td')
  .addClass('borderBottom');

您还可以为元素添加data-*属性td而不是创建动态类,然后您可以使用 jQuery.data()方法选择和过滤它们:

<td class='transaction_partner_name_td' data-id="<?php echo $row_number;?>">

$('td.transaction_partner_name_td').filter(function() {
    return $.inArray( $(this).data('id'), an_id_array ) > -1;
}).addClass('borderBottom');
于 2013-09-22T14:46:05.050 回答