如何解析HTML字符串并删除某个类的div?

时间:2013-09-17 18:13:52

标签: javascript dojo

我有一个服务返回一个HTML片段,其中有一个div类“customerID”,在我将此代码附加到DOM之前,我需要检查模型中是否有customerID,如果没有,我需要需要在剪切中找到div并将其删除。

这是如何实现的?

3 个答案:

答案 0 :(得分:1)

尝试使用:

  • dojo/dom-construct
  • dojo/query
  • dojo/NodeList-dom(加载它会启用orphan()方法)

换句话说,可能是:

var tempNode = domConstruct.toDom("<div>Hello world.</div>"); // Make a DOM fragment
var custDivList = query("div.customerID", node); // Find the problem divs and return nodeList
var removedNodes = custDivList.orphan(); // Remove each node in the list from its place
var scrubbedHtmlString = tempNode.innerHTML; // Get the final result

答案 1 :(得分:1)

与其他答案所表明的一样,它可能最好解析您拥有的代码段并使用dom操作方法删除您需要的内容。这类似于@Darien的回答,但我的回答包括所需的依赖关系,并且是一个有效的例子。

require([
    'dojo/dom-construct',
    'dojo/query',
    'dojo/NodeList-dom', // provides query(...).orphan()
    'dojo/domReady!'
], function(dom_construct, query) {

    // get your html snippet; hardcoded here for convenience and example
    var html_snippet = [
        '<div>',
            '<div class="customerID">customerID</div>',
            '<div class="content">other content</div>',
        '</div>'
    ].join(''),
        has_customerid = false;

    var node = dom_construct.toDom(html_snippet);

    if (!has_customerid) {
        query('.customerID', node).orphan();
    }

    document.body.appendChild(node);
});

解析您的代码段,检查是否存在customerID,如果不存在则删除指定的节点。

Here's a fiddle这样你就可以玩has_customerid并对节点做任何你需要的事情。您可能想要验证query(...)的结果;我遗漏了任何错误检查。

答案 2 :(得分:-1)

如果你有JQuery,你可以这样做:

var html = $(htmlSnippet);
if(!modelHasCustomerID){
    $(".customerID", html).remove();   
}
container.append(html);

我对dojo不是很熟悉但是相信这可以用dojo.create,dojo.destroy和dojo.query来完成。