У меня очень неприятная проблема. У меня есть кнопка с именем #log-out
, и когда вы нажимаете на нее, она сохраняет определенный фрагмент данных в переменной localStorage под названием importantOSdata
.События JQuery не работают для динамически добавленных Divs
Когда страница загружает его, проверяет, является ли переменная != null
, и если она не удаляет div, который был сохранен в переменной localstorage со страницы, и заменяет его тем, который сохранен в переменной localStorage. Проблема заключается в том, что заголовок говорит, что jquery-события не будут работать на динамических div, даже если они уже работали, когда не было сохраненных данных, и это был просто жесткий код html. Я попытался использовать .on(), но, как вы можете видеть в коде, я использую ключевое слово и не будет работать должным образом. Я ДОЛЖЕН использовать ключевое слово this
.
(1) Код, который у меня есть, имеет событие click для div и проверяет, имеет ли он определенный тип тега данных (название данных) и простой старый тег src. Затем он передается в функцию, которая создает всплывающее iframe с src из тега src. (1) код, который используется для работы:
$(".icon").each(function() {
var iconFile = $(this).attr("data-iconFile");
var title = $(this).attr("data-title");
var file = $(this).attr("src");
$(this).css("backgroundImage", "url(" + iconFile + ")");
$(this).dblclick(function() {
new createFrame(file,title);
addItem($(this).attr("class"),iconFile);
//canSlideUp = false;
});
});
Новый код, который я пробовал:
$(".icon").each(function() {
var iconFile = $(this).attr("data-iconFile");
var title = $(this).attr("data-title");
var file = $(this).attr("src");
$(this).css("backgroundImage", "url(" + iconFile + ")");
$(this).on("dblclick",function() {
new createFrame(file,title);
addItem($(this).attr("class"),iconFile);
//canSlideUp = false;
});
});
});
и безопасный/код загрузки:
$(document).ready(function() {
$("#log-out").click(function() {
alert("Your Progress was saved:"+localStorage.getItem("inportantOSdata"));
localStorage.setItem("inportantOSdata",document.getElementById("data-holder").innerHTML);
});
});
window.onload = function(){
if(localStorage.getItem("inportantOSdata") != null) {
$("#data").remove();
alert("data exists");
$("#data-holder").html(localStorage.getItem("inportantOSdata"));
}
}
//localStorage.clear();
Вы можете увидеть как я использую это ключевое слово. Любая интересная проблема? Заранее спасибо!
Вам необходимо использовать 'on' в методе [Event Delegation] (https://learn.jquery.com/events/event-delegation/). Ваш 'on' должен выглядеть примерно так:' $ (document) .on ('click', '.icon', .function() {... do stuff ...} '- см. Также этот пост: http: //stackoverflow.com/questions/8110934/direct-vs-delegated-jquery-on - Учтите, что ваш '.each' не будет работать ни на динамически создаваемых элементах, они не будут существовать, когда запускается .each. –