如果在Jquery中等于,则删除元素

时间:2011-12-02 15:08:14

标签: javascript jquery element

如果内容等于jquery中设置的变量,我试图删除jquery中的元素。在这个例子中,我试图删除.sub3,因为内容等于变量集。

<div class="sub1">
    <a href="/large.jpg" class="group1 cboxElement">
    <img border="0" alt="" src="/thumb.jpg">
    </a>
</div>

<div class="sub2">
    <a href="/029-large.jpg" class="group1 cboxElement">
    <img border="0" alt="" src="/029-thumb.jpg">
    </a>
</div>

<div class="sub3">
    <a href="" class="group1 cboxElement"></a>
</div>

我想出的Jquery只是删除整个元素而不管

var nopic = <a class="group1 cboxElement" href=""></a>;

if($.trim($(".sub1").text()) == nopic) {
$(".sub1").remove();
}

if($.trim($(".sub2").text()) == nopic) {
$(".sub2").remove();
}

if($.trim($(".sub3").text()) == nopic) {
$(".sub3").remove();
}

感谢您的任何指示!

6 个答案:

答案 0 :(得分:2)

一行,适用于所有空链接的简单案例:

$('div[class^="sub"] a.group1.cboxElement[href=""]').parent('div').remove()

答案 1 :(得分:2)

如果您的目的是删除不包含图像的内部div,则以下内容就足够了:

$('div[class^="sub"]').filter(':not(:has(img))').remove();

答案 2 :(得分:0)

你应该使用html()

var nopic = '<a class="group1 cboxElement" href=""></a>';

if($.trim($(".sub3").html()) == nopic) {
    $(".sub3").remove();
}

答案 3 :(得分:0)

.text()返回节点的文本内容,而不是HTML。您想要.html()

e.g。

   你好
$('#blah').text() -> Hello
$('#blah').html() -> <a href="somewhere">Hello</a>

答案 4 :(得分:0)

我可以看到三个问题:

  1. 分配nopic变量的语法错误。您需要围绕分配给它的值的引号。
  2. 鉴于您当前的HTML,您的.subX元素中没有任何文字。他们有HTML。因此,您应该使用.html()方法而不是.text()
  3. 即使您解决了我在#1中描述的问题,它仍然无效,因为nopic的值不会等于<a>中的.sub3标记(我假设是你用来测试的东西)。这是因为hrefclass属性相反。
  4. 这是有效的JS,以及a live example

    var nopic = '<a href="" class="group1 cboxElement"></a>';
    
    if($.trim($(".sub1").html()) == nopic) {
            $(".sub1").remove();
    }
    
    if($.trim($(".sub2").html()) == nopic) {
        $(".sub2").remove();
    }
    
    if($.trim($(".sub3").html()) == nopic) {
        $(".sub3").remove();
    }
    

答案 5 :(得分:0)

我认为你可能会倒退。如果它包含该链接标记,您要尝试删除div。找到你正在寻找的a并删除它的父母可能会更容易。

$('a.group1.cboxElement').parents('div[class^="sub"]').remove();