2012-01-04 37 views
19

Tôi gặp khó khăn khi thực hiện tìm và thay thế các giá trị thuộc tính.JQuery: tìm và thay thế các giá trị thuộc tính

Cân nhắc html này:

<tr id="rules[0]"> 
    <td> 
     <input id="rules0.isActive1" name="rules[0].isActive" type="checkbox" value="true"/><input type="hidden" name="_rules[0].isActive" value="on"/> 
    </td> 
    <td> 
     <select id="rules0.leftCondition.name" name="rules[0].leftCondition.name"> 
      ... 
     </select> 
    </td> 

Tôi đang tìm kiếm để cập nhật từng 's thuộc tính tên với số lượng thích hợp ví dụ quy tắc [0] .isActive được cập nhật với các quy tắc [10] .isActive

Tôi đang sử dụng đoạn mã JQuery này:

$(newRow).find('[id*="rules"]').each(function(){ 
    // Update the 'rules[0]' part of the name attribute to contain the latest count 
    this.name.replace('rules\[0\]','rules\[$count\]'); 
}); 

nơi newRow là một biến giữ toàn bộ khối và số lượng nắm giữ giá trị truy cập mới nhất. Tuy nhiên, khi tôi gỡ lỗi mã này có vẻ như "this.name" là không xác định.

Tôi sẽ làm gì sai ở đây?

Cảm ơn

+0

Tại sao bạn serach cho 'id' và không cho' name'? – jantimon

Trả lời

20

Để cập nhật thuộc tính của nguyên tố bạn nên sử dụng chức năng .attr. Ngoài ra, khi sử dụng điều này trong ngữ cảnh jQuery, bạn phải sử dụng cú pháp $ (this) này. Nếu tôi hiểu ý định của bạn vì vậy nó nên được một cái gì đó như thế:

$(newRow).find('[id*="rules"]').each(function(){ 
    // Update the 'rules[0]' part of the name attribute to contain the latest count 
    $(this).attr('name',$(this).attr('name').replace('rules\[0\]','rules\[$count\]')); 
}); 
3

Hãy thử điều này:

$(this).attr('name', $(this).attr('name').replace('rules\[0\]','rules\[$count\]')); 
6

Bạn nên sử dụng $(this).attr('name') thay vì this.name.

5

thử điều này: Giả sử hàng thuộc tính tên là 'filterCol' sau đó bạn có thể thiết lập các giá trị mới cho thuộc tính mà

$("#trId").attr("filterCol", newValue); 
Các vấn đề liên quan