删除其他类中的类似元素

时间:2011-11-16 15:35:07

标签: javascript jquery

如何在html中点击.makhzan111222之后删除类333中的类似元素(ul)?

演示: http://jsfiddle.net/nkNbc/

我的尝试:

$('.class_show .tooltip_hover').live('click change', function(){
    $(this).closest('ul').remove();
    var value_bet = $(this).text();
    $(".makhzan .tooltip_hover li").filter(function () {
        var get = $(this).text() == value_bet;
        return get.closest('ul'); // This doesn't work for remove element ul
    }).remove();
});

3 个答案:

答案 0 :(得分:0)

filter()函数希望您的回调函数返回truefalse。您应该返回get,然后删除已过滤集合上的closest('ul')

$('.class_show .tooltip_hover').live('click change', function(){
    $(this).closest('ul').remove();
    var value_bet = $(this).text();
    $(".makhzan .tooltip_hover li").filter(function () {
        return $(this).text() == value_bet;
    }).closest('ul').remove();
});

答案 1 :(得分:0)

也许这会对你有帮助,我不确定

$('.class_show .tooltip_hover li').click(function() {
    var li_text = $(this).text();
    $('.makhzan .tooltip_hover li').each(function() {
        if($(this).text() == li_text){
            $(this).remove();
        }
    });
});

仅当文本完全相同时才会起作用。

也许您必须使用其他类型的比较

答案 2 :(得分:0)

尝试使用:contains来回避过滤器功能:

$('.class_show .tooltip_hover').live('click change', function(){
    $(this).closest('ul').remove();
    var value_bet = $.trim($(this).text());
    $('.makhzan .tooltip_hover li:contains("'+value_bet+'")')
        .closest('ul').remove();
});

http://jsfiddle.net/mblase75/nkNbc/4/

但是,如果您使用的是jQuery 1.7,您可能也习惯使用.on代替.live

$(document).on('click change', '.class_show .tooltip_hover', function() {
    ...
});

http://jsfiddle.net/mblase75/nkNbc/5/

<强>更新

根据nachito的评论 - 如果我正在构建此内容,我会为每个data-key="1"分配一个<li>之类的属性并与之匹配,而不是尝试匹配HTML的确切文本内容元素并冒着不匹配的风险:

$(document).on('click change', '.class_show .tooltip_hover', function() {
    $(this).closest('ul').remove();
    var value_bet = $(this).find('li').data('key');
    $('.makhzan .tooltip_hover li[data-key="' + value_bet + '"]')
        .closest('ul').remove();
});

http://jsfiddle.net/mblase75/nkNbc/6/