как получить externalHTML с помощью jquery, чтобы он был кросс-браузерным - PullRequest
1 голос
/ 20 апреля 2011

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

var buttonField = $('<input type="image" />');
    buttonField.attr('id', 'butonFshi' + lastsel);
    buttonField.val('Fshi');
    buttonField.attr('src', 'images/square-icon.png');
    if (disabled)
        buttonField.attr("disabled", "disabled");
    buttonField.val('Fshi');
    if (onblur !== undefined)
        buttonField.focusout(function () { onblur(); });
    buttonField.mouseover(function () { ndryshoImazhin(1, lastsel.toString()); });
    buttonField.mouseout(function () { ndryshoImazhin(0, lastsel.toString()); });
    buttonField.click(function () { fshiClicked(lastsel.toString()); });

А у меня такая ситуация:

 buttonField[0].outerHTML = `<INPUT id=butonFshi1 value=Fshi src="images/square-icon.png" type=image jQuery15205073038169030395="44">`

вместо внешней функции, которую я нашел, выдает buttonField.outer () = <INPUT id=butonFshi1 value=Fshi src="images/square-icon.png" type=image>

Функция:

$.fn.outer = function(val){
    if(val){
        $(val).insertBefore(this);
        $(this).remove();
    }
    else{ return $("<div>").append($(this).clone()).html(); }
}

так вот так я теряю вставленные мной обработчики. В любом случае можно получить externalHTML с jquery, чтобы он был кросс-браузерным без потери обработчиков?!

Ответы [ 4 ]

0 голосов
/ 24 января 2013

Попробуйте это:

var html_text = `<INPUT id=butonFshi1 value=Fshi src="images/square-icon.png" type=image jQuery15205073038169030395="44">`
buttonField[0].html(html_text);

:)

0 голосов
/ 03 февраля 2012

Проверьте плагин jQuery из https://github.com/darlesson/jquery-outerhtml. С этим плагином jQuery вы можете получить externalHTML из первого сопоставленного элемента, заменить набор элементов и манипулировать результатом в функции обратного вызова.

Рассмотрим следующий HTML:

<span>My example</span>

Рассмотрим следующий вызов:

var span = $("span").outerHTML();

Переменная span равна Мой пример .

В ссылке выше вы можете найти больше примеров того, как использовать плагин .outerHTML ().

0 голосов
/ 13 марта 2012

Вам не нужно сначала преобразовывать его в текст (то есть то, что отключает его от обработчиков, события могут иметь только узлы DOM и другие конкретные объекты JavaScript).Просто вставьте только что созданный / измененный узел напрямую, например,

$('#old-button').after(buttonField).remove();`

after возвращает предыдущую коллекцию jQuery, чтобы remove избавился от существующего элемента, а не от нового.

0 голосов
/ 20 апреля 2011

Это должно работать нормально:

var outer = buttonField.parent().html();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...