如何在/ jquery $('td')。css中添加/插入json数据[0]等?

时间:2013-09-22 14:30:38

标签: jquery css ajax json

这是工作代码

$('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++; } ?>

但这不起作用。使用View源,请参见此$('td.transaction_partner_name_td(data[1])').css('border-bottom', '1px solid #FF0000');

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

解决方案

感谢T.J.目前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++; } ?>

2 个答案:

答案 0 :(得分:2)

我认为可能有更好的方法来完全接近这个结构,但 minimal 改变你所拥有的那些允许你定位这些单元格的是:

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");

答案 1 :(得分: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');