W jaki sposób można usunąć podobny element (UL) w klasie .makhzan Po kliknięciu jednego z {x1}} lub 222 lub 333 przez jQuery w HTML?

demo: http://jsfiddle.net/nknbc/

Moja próba:

$('.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();
});
0
Kate Wintz 16 listopad 2011, 19:35

3 odpowiedzi

Najlepsza odpowiedź

Spróbuj użyć :contains, aby przesączyć funkcję filtra:

$('.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/

Jeśli korzystasz z jQuery 1.7, jednak możesz również przyzwyczaić do użycia .on zamiast .live:

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

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

AKTUALIZACJA

W świetle komentarzy Nachito - gdybym budował, przypisałbym atrybut takiego data-key="1" do każdego <li> i dopasuj, który zamiast próbować dopasować dokładną zawartość tekstu elementu HTML i ryzykując niedopasowanie:

$(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/

0
Blazemonger 16 listopad 2011, 16:13

Może to ci pomoże, nie jestem pewien

$('.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();
        }
    });
});

Będzie to działać tylko wtedy, gdy tekst jest dokładnie taki sam.

Może trzeba użyć innego rodzaju porównania

0
MCSI 16 listopad 2011, 15:54

Funkcja filtra () spodziewa się funkcji zwrotnej do powrotu true lub false. Powinieneś wrócić get, a następnie wyjmij closest('ul') na filtrowanej kolekcji.

$('.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();
});
0
nachito 16 listopad 2011, 15:48