【问题标题】:run jQuery on variable and not on document在变量而不是文档上运行 jQuery
【发布时间】:2011-04-14 01:33:13
【问题描述】:

您知道是否可以在包含 html 的变量上运行 jQuery,而不仅仅是在文档本身上运行。

例子:

bg.inspectorGetRawHtml = function(){
    var c = jQuery("#bg-admin-inspect-wrapper").html();
    jQuery(".bg-admin-inspect-state", c).remove();
    console.debug(c);
}

因此,基本上,将页面 html 的一部分读入一个变量,然后对该字符串执行 jQuery 操作。

如果我 console.debug 实际的 jQuery 删除,似乎匹配,但 var 没有被操纵。我知道 jQuery 依赖于 DOM,也许这就是它不起作用的原因,但如果有人对此有任何见解...... 编辑 在 lonesomeday 的建议之后,这是我最终得到的代码:

bg.inspectorGetRawHtml = function(){
    var c = jQuery("#bg-admin-inspect-wrapper").clone();
    jQuery(".bg-admin-inspect-state", c).remove(); //The ,c specifies what element to work on.
    console.debug(c.html());
}

【问题讨论】:

    标签: jquery variables


    【解决方案1】:

    你需要的函数是$().detach:

    bg.inspectorGetRawHtml = function(){
        var c = jQuery("#bg-admin-inspect-wrapper").detach();
        console.debug(c);
    }
    

    这将从 DOM 中移除所选元素并允许您对其执行 jQuery 操作。


    编辑 您还可以从字符串创建一段 HTML 并将其转换为 jQuery 选择并使用它。比如

    $(document).ready(function() {
        var newText = '<div><p>Some text here</p><img src="image.png" /></div',
            $newDiv = $(newText);
    
        $newDiv.addClass('someClass');
    
        $('body').html($newDiv);
    });
    

    这会创建一个包含一段内容和一张图片的新 div,将类“someClass”添加到 div 并用新的 div 替换页面的内容。

    【讨论】:

    • 哦,是的,呵呵。谢谢寂寞的一天。我实际上使用了 clone(),因为我想将原始数据留在页面上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多