2016-01-09 5 views
2

Как я могу сохранить значение onclick="" с помощью JQuery replaceWith? Делаю систему активов, которые преднагрузки каждое изображение и поместить его на объект Javascript image(), и с помощью специального атрибута данных для IMG URLsJQuery replaceWith keep onclick

<img data-assets="images/test.png" onclick="alert('test')"> 

превращаются в: (с помощью Jquery ReplaceWith)

<img src="assets/images/test.png"> 

Что я хочу:

<img src="assets/images/test.png" onclick="alert('test')"> 

Мой код:

$("[data-assets]").each(function() { 
    $(this).replaceWith(Game.Preloading.Assets.Images[$(this).data('assets')]); 
}); 

Как я могу исправить это? Благодаря

+0

Почему бы не назначить OnClick программно, так что вам не придется беспокоиться о баловаться с HTML атрибуты? – Araymer

ответ

0

В то время как итерация каждого [data-assets] элемента, можно установить соответствующий onclick атрибут перед заменой элемента:

$("[data-assets]").each(function() { 
    var $newImg = $(Game.Preloading.Assets.Images[$(this).data('assets')]); 
    $newImg.attr('onclick', $(this).attr('onclick')); 

    $(this).replaceWith($newImg); 
}); 

Однако, было бы лучше просто добавить атрибут существующего элемента src, а не замена это:

$("[data-assets]").each(function() { 
    this.src = $(Game.Preloading.Assets.Images[$(this).data('assets')]).attr('src'); 
}); 

в идеале, вы должны использовать unobtrusive JavaScript и избегая встроенный JavaScript но оба этих фрагмента должны работать.

0

Я думаю, вам будет лучше просить запрос для вашего атрибута, а затем использовать каждый метод для обновления атрибута SRC для каждого согласованного элемента.

Im на моем телефоне, чтобы более подробный ответ трудно ...

Но здесь идет

$("[data-assets]").each(function(){ $(this).attr("src", Game.Preloading.Assets.Images[$(this).data('assets')]); }); 
+1

Если я изменю src, будет ли загружаться изображение, или это будет похоже на то, что я сделал replaceWith? –

+0

Он будет бездельничен –

+1

Да, я знаю, но я спрашиваю, будет ли он загружен в другой раз или он возьмет с объекта изображения()? –