0

私はこの問題を抱えています: を生成してに追加するプラグインを作成しました<div><body>、これ<div>には id があり、この関数を複数回呼び出すと、明らかな理由で Web サイトがクラッシュします。一意が必要なため、クラスを使用できません追加した div の属性を変更するには、次のように乱数を作成して ID に追加することで、この問題を解決しました。

var unique_number = Math.floor(Math.random()*1000001);
var tempImg = '<img id="tempImg'+unique_number+'" src="' + path + ' "/>';
$('body').append(tempImg); 
//And I use it like
$('#tempImg'+unique_number).load(function(){ //blabla }

しかし、これがこれを行う最善の方法ではないと確信しています。別のより良い/最も効率的なソリューションを持っている人はいますか? ありがとう。

4

4 に答える 4

1

(そのページに対して)一意の識別子が本当に必要な場合は、実際にはカウンターを使用しますが、実際にはidここでは必要ありません。

var img = $('<img src="' + path + ' "/>');
img.load(function() {
    // ...
});
img.appendTo('body');
于 2012-08-03T03:35:11.063 に答える
1

あなたはプロパティを試すことができlengthます:

var count = $('img[id^="tempImg"]').length + 1;
var tempImg = '<img id="tempImg'+count+'" src="' + path + ' "/>';
于 2012-08-03T03:36:29.567 に答える
1

これは one-string-function で書くことができます:

$("<div/>")
  .appendTo("body")
  .append($("<img>", { "src": path })
            .load(function () {
              // do smth
            })
  );
于 2012-08-03T03:42:09.533 に答える
0

はい、カウンターを定義し、新しい要素を作成するたびにカウンターを増やすことができます。

var nextId = (function(){
    var prefix = 'some_really_uniq_string_';
    var id = 0;
    return function(){
        return prefix + (id++);
    };
})();
//each time you create a new element, call nextId()
于 2012-08-03T03:37:09.160 に答える