3

我有代码可以用 jquery 更改元素的新 id。

$('.trclick').click(function(){
  var id = $(this).attr('id');
  var idright = split_right(id,'__');
  var val = $('#ims_master_test_day1__'+idright).val();

  $('#ims_master_test_day').attr( 'id', 'ims_master_test_day__' + idright );
});

它工作,但它只激活一个。请帮我。谢谢!

4

2 回答 2

6

当您说“它有效但它只激活一个”时,我将假设您的意思是“它仅在第一次被调用时起作用”。原因是这行代码:

$('#ims_master_test_day').attr( 'id', 'ims_master_test_day__' + idright );

您通过其 id 获取元素,然后更改它。它第二次不起作用,因为元素不再具有该 ID。您可以通过执行以下操作来修复它:

var test_day = $('#ims_master_test_day')

$('.trclick').click(function(){
  var id = $(this).attr('id');
  var idright = split_right(id,'__');
  var val = $('#ims_master_test_day1__'+idright).val();

  test_day.attr( 'id', 'ims_master_test_day__' + idright );
});
于 2012-05-03T04:52:46.270 回答
0

第一次改id后,以后再也找不到要改id的元素了

// this won't work the second time because the id is different now
$('#ims_master_test_day').attr( 'id', 'ims_master_test_day__' + idright );

所以你需要修改你的代码才能每次都改变id。例如,这样的事情可能会起作用:

// cache the current id in some variable somewhere :)
var currentId;
$('.trclick').click(function(){
  var id = $(this).attr('id');
  var idright = split_right(id,'__');
  var val = $('#ims_master_test_day1__'+idright).val();

  $('#'+currentId).attr( 'id',  'ims_master_test_day__' + idright);

  // set the current id
  currentId = 'ims_master_test_day__' + idright;
});
于 2012-05-03T04:51:52.000 回答