2012-05-03 6 views
3

jqueryを持つ要素の新しいIDを変更するコードブローがあります。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); 
}); 

これは機能しますが、1つだけアクティブです。私を助けてください。ありがとう!

+1

「split_right」とは何ですか? – Sampson

+0

'activate'とはどういう意味ですか? –

+1

同じidを持つ2つの要素を持つことはできません! HTMLにあなたの作成したidを持つ要素がすでにあることがわかります。 – Murtaza

答えて

6

私はあなたが言うと、「それだけでそれを呼び出して初めて機能」を意味すると仮定するつもりだ「それは仕事を一つだけ、それがアクティブに。」その理由は、次のコード行です。

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

要素をIDで取得していますが、それを変更しています。この要素はもはやそのidを持っていないので、2回目は動作しません。

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); 
}); 
+0

ああ、将来のために要素をキャッシュすることは、IDをキャッシュするよりはるかにうまくいくでしょう:)良いもの! – jeremysawesome

+0

よかった、ありがとう。 – maolddv

+0

@aaa:これがあなたの質問に答えた場合は、チェックマークをクリックして、他の人に知らせて、ポスターに報酬を与えるべきです。 –

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; 
}); 
関連する問題