2011-04-20 25 views
1

我在jQuery論壇中發現了一個響應,並且他們提供了一個函數來執行此操作,但結果並不相同。 這裏是我的圖像按鈕創建了一個例子:如何使用jQuery獲得outerHTML以使其跨瀏覽器

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(); } 
} 

這樣喜歡這我鬆開了我插入的處理程序。 有沒有辦法使用jquery獲得outerHTML,以便讓它跨瀏覽器而不會丟失處理程序?!從https://github.com/darlesson/jquery-outerhtml

var outer = buttonField.parent().html(); 
+0

這不是創建自定義屬性的好東西,比如'jQuery15205073038169030395 = 「44」'。相反,使用jQuery函數'.data(element,key,value)'來存儲自定義數據。然後,您可以使用'.clone(true)',其中布爾值指示是否要複製數據和事件 – Andre 2011-04-20 15:56:13

回答

-2

這應該做工精細。使用這個jQuery插件,您可以從第一個匹配元素中獲取outerHTML,替換一組元素並在回調函數中處理結果。

考慮以下HTML:

<span>My example</span> 

考慮以下呼叫:

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

可變跨度等於<跨度>我的例子< /跨度>。

在上面的鏈接中,您可以找到更多關於如何使用.outerHTML()插件的示例。

+0

,以便抓取任何兄弟,並且仍然丟失處理程序。 – Walf 2012-03-13 04:38:44

-1

退房的jQuery插件:

+0

「如何使用jquery獲得outerHTML以使其跨瀏覽器」。不知道爲什麼這是因爲它迴應標題問題而被否決。 – Darlesson 2014-02-14 18:42:16

0

您不需要先將其轉換爲文本(這是將它與處理程序斷開連接,只有DOM節點和其他特定JavaScript對象可以有事件)。只需直接插入新創建/修改的節點,例如

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

after返回以前的jQuery集合所以remove擺脫了現有的元素,而不是一個新的。

0

試試這個:

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

:)

相關問題