2011-02-08 2 views
3

Так вот код, я использую:JQuery: Append раз и остановить (работал в более старых версиях)

$(function(){ 
    $('<div id="info" style="width:auto; height:auto;"/>').load('test.php?var='+d+' #se', function() { 
     $('#main').append(this); 
    }); 
}); 
} 

Теперь, когда я вызвать функцию (с KeyUp в поле ввода) в DIV нагруженного добавляется снова и снова при каждом событии keyup.

Я использую jQuery 1.5 - в более старых версиях, а именно 1.2.6, div не был добавлен после первого раза, и он работал нормально (ошибка?).

Как предотвратить добавление div снова и снова? (отключить «триггер», к сожалению, не вариант). Я также попробовал appendTo, что в значительной степени та же проблема.

Кто-то мне помогает! Большое спасибо

+0

Просто заверните вызов загрузки в условной проверке, чтобы увидеть, существует ли 'div # info'. –

+0

Вы можете добавить данные в свой основной div, чтобы проверить, загружен ли div и просто ничего не предпринимает в этом случае. – Maher4Ever

ответ

0

использование

$(function(){ 
    if($("#info").length==0) 
    { 
     $('<div id="info" style="width:auto; height:auto;"/>').load('test.php?var='+d+' #se', function() { 
     $('#main').append(this); 
     }); 
    } 
}); 
} 

Предполагая, что "#info" добавляется динамически.

+1

Это никогда не завершится. Вы имеете в виду 'length == 0'? – eyelidlessness

2

Похоже, вы можете использовать .one связать свой KeyUp обработчик:

$('whatever').one('keyup', function() { 
    $('<div id="info" style="width:auto; height:auto;"/>').load('test.php?var='+d+' #se', function() { 
     $('#main').append(this); 
    }); 
}); 

.one функция действует так же, как .bind за исключением того, что она развязывает себя после того, как она выполняется один раз.

 Смежные вопросы

  • Нет связанных вопросов^_^