Так что я знаю о функции .on() jQuery, чтобы давать обработчики событий динамически добавленного элемента.jQuery .on() "append"
Например, я использовал это так
$(document).on("change",Items,function(){/*Code here*/});
Но есть способ, чтобы использовать эту .Ну() функцию (или что-то еще), чтобы вызвать функцию когда объект был прилагаемой в документ ? Я спрашиваю, потому что я использую JQuery плагин называется Избранным, который создает более полей выбора, и она работает с использованием линии
$(selector).chosen();
Однако эта линия не работает, если он используется, прежде чем элемент добавляется в документ, и для чистоты моего кода было бы неплохо, если бы я мог вызвать функцию для запуска этой строки, когда элемент был добавлен, вместо добавления этой строки после добавления элемента.
Редактировать: Проблема не в том, что я не могу использовать .chosen() после добавления элемента. Потому что я могу! Я просто хочу, чтобы мой код был лучше организован, так как строка $ (селектор) .chosen() была скрыта полностью в нижней части моего кода незаметно.
Мой код:
//Create the dropdown box for the items
var Items = document.createElement("select");
$(Items).attr({"id":"Items"});
$(document).on("change",Items,
function(){
updateHolder(true);
$(InfoBox).trigger("chosen:updated");
setTimeout(
function(){
$(Items).data('chosen').input_blur();
}, 100
);
}
);
//Add items from ED.listOfItems to HTML Items dropdown box
for(var it in ED.listOfItems){
var iKey = ED.listOfItems[it];
var itemOption = document.createElement("option");
if(!Array.isArray(iKey)){
$(itemOption).val(iKey);
$(itemOption).html(iKey.split("_")[0]);
}
else{
$(itemOption).val(iKey[0]);
$(itemOption).html(iKey[1]);
}
$(Items).append(itemOption);
}
/*******Set default to spawn*******/
/**/ ED.objectType = "Spawn"; /**/
/**/ ED.infoType = ""; /**/
/**/ $(Items).val("Spawn"); /**/
/**********************************/
$(MenuBar).append(Items);
$(Items).chosen({disable_search_threshold: 100});
$("#Items_chosen").css({"width":"100px","position":"absolute","left":"5px","top":"20px"});
Как вы можете видеть, второй в последней строке выбранной линии, но это только кажется, что в нелогичной место для меня. Я очень OCD с моим кодом: P
как вы добавляете элемент? –
Возможный дубликат [Самый эффективный метод обнаружения/мониторинга изменений DOM?] (Http://stackoverflow.com/questions/2457043/most-efficient-method-of-detecting-monitoring-dom-changes) – Bergi
@Stefan Я просто использовать $ (parentElement) .append (childElement) –