2011-04-20 27 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); 

:)

相关问题