2012-03-15 2 views
0

こんにちは私は次のコードを持っています。jqueryとメモリリークのIEパフォーマンスが遅い

<input id="input1" type="text"> 
<input id="input2" type="text"> 
<input id="input3" type="text"> 
// ... so on up to 12. 

私のコード

var $j = jQuery.noConflict(); 
$j(document).ready(function ($) { 
    var i, id; 
    for (i = 1; i != 13; ++i) { 
     id = "input" + i; 
     $(myFunc).on("change", function() { 
      this.value += " tab"; 
     }); 
    } 
); 

私は点滴によると... INPUT1、INPUT2にメモリリークを取得しています。

どうすればこの問題を解決できますか?

+0

あなたの変数 'myFunc'の由来とその内容はどうすればいいですか? –

+0

'myFunc'はどこに定義されていますか? – ShankarSangoli

+0

おそらくあなたはmyFuncの代わりに 'id'を意味していました。ちょうどタイプミスですか?おそらく、 'this.value + =" tab ";'で値を変更すると、IEは変更イベントを再度発生させ、無限ループを引き起こします。しかし、野生の推測と同じです。 –

答えて

0

あなただけの(等しくない操作対未満に気づく)私はどうしたら、この12回実行しようとしている場合:

for (i = 1; i < 13; ++i) { 

また、どこにmyFuncが定義されていますか?

$(id).on("change", function() { 
     this.value += " tab"; 
}); 

もう一つの事を、そしてこれはまだ問題であるならば、私は知らない、一部のブラウザでは、jQueryのは、そこに入力された値を設定する問題を抱えているために使用します。たぶん、あなたは何をしようとしています値属性定義はありませんでした。

<input id="input1" type="text" value="" /> 
0

何をしようとしていますか? id1をinput1-12に設定するためのループを実行しますが、on( 'change')eventlistenerは 'id'変数を使用しません。

あなたの入力のいずれかで変更を聞き取り、それが変更されたときに「タブ」を追加しようとしていますか?その場合

$('input').on('change', function() { 
    $(this).attr('value') += " tab"; 
}); 

で十分です。

+0

これはidでtweleve時間を検索するよりも速いのですか?パフォーマンスは賢明です。私は約10000のDOM要素を持っています。 –

+0

12個の入力をコンテナdivにラップして、次のような変更関数を呼び出します:$( 'containerdiv')on( 'change'、 'input'、function(){blablabla}); – ninja

+0

申し訳ありません。 12の入力が広がります。それらはタブを横切って広がり、オプション、チェックボックス、および他の入力を選択します。基本的にIEでは遅いですし、時にはページを処理するのに20秒かかることもあります(javascriptは賢明で、落書きはjqueryのオブジェクト・レジスタでメモリー・リークを表示します)。 –

関連する問題