删除不包含特定类的html元素

时间:2011-09-11 00:44:45

标签: jquery jquery-selectors

我正在尝试删除处于非活动状态的li,但无法使其工作:

var html = $("#myjqgriddiv").remove("ul li:not(.ui-state-active)").html();

我有html,我想删除不包含类.ui-state-active

的li

在使用.ui-state-active的li之后的代码仍然存在。

需要帮助。

更新:

我打算使用window.open("","Print")/document.write

打印html

@tvanfosson答案正在运作,但还有一件小事,第一次修改后留下的单一李我想要编辑,我想从其a孩子中删除属性“href”

var html = $('#myjqgriddiv') // select div
                .find('ul li:not(.ui-state-active)') // select elements to remove from div
                .remove()  // remove the matched elements
                .end() // revert back to the originally selected elements
                .html(); // and get the HTML


html = $(html).find("ul li.ui-state-active a)").removeAttr("href").html(); // not working?!

2 个答案:

答案 0 :(得分:3)

删除的参数充当过滤器,而不是选择器。由于您只选择了一个标识为mygqgriddiv的元素,因此过滤器不会删除任何内容。尝试。

 var html = $('#myjqgriddiv') // select div
                .find('ul li:not(.ui-state-active)') // select elements to remove from div
                .remove()  // remove the matched elements
                .end() // revert back to the originally selected elements
                .find("ul li.ui-state-active a)") // now get the active ones
                .removeAttr("href") // remove the href attribute
                .end() // back to the original selection
                .html(); // and get the HTML

答案 1 :(得分:0)

jQuery的remove只会删除所选列表中的元素。将两个选择器放入$函数并删除结果。

var html = $("#myjqgriddiv ul li:not(.ui-state-active)").remove().html();