2010-03-30 2 views
2

У меня есть что-то похожее на следующее ... использовал скрипт python для заполнения JSON.jquery click a img hide a LI

<ul> 
<li id="p1" class="x">val1 <img id="ip1" class="redx" src="redx.gif"/></li> 
<li id="p2" class="x">val2 <img id="ip2" class="redx" src="redx.gif"/></li> 
<li id="p3" class="x">val3 <img id="ip3" class="redx" src="redx.gif"/></li> 
<li id="p4" class="x">val4 <img id="ip4" class="redx" src="redx.gif"/></li> 
</ul> 

Я хотел бы некоторые JQuery для ... когда нажмите на красный крестик изображение .., чтобы скрыть всю LI клетки она находится.

Я попробовал несколько вещей, но ... к нет.

EDIT: Всего .. это, похоже, не вызывает ... это похоже на фундаментальную проблему.

$(function(){ 
    function removeli() { 
     alert("got here" + this.id); 
    } 
    $("redx").click(removeli); 
}); 

Любые идеи по окончательному коду jquery для этого?

ответ

3

нужен . префикс для классов

$('.redx').live('click', removeli); 

обновленный код, используя прямой эфир:

$(function() { 
    $('.redx').live('click', function() { 
     $(this).parent('li').hide(); // or .remove() 
    }); 
}); 

с помощью делегата (будет работать только в случае, если <ul> не изменится, только <li> ' с внутри него):

$(function() { 
    $('ul').delegate('img', 'click', function() { 
     $(this).parent('li').hide(); 
    }); 
}); 
+0

LOL даже если это правда. по-прежнему не стоит исправлять синтаксис. В firebug я должен видеть, что onclick добавлен ко всем ли в коде? – Kirby

+0

, что наиболее вероятно, потому что вы динамически добавляете строки после настройки обработчика кликов. используйте 'live' или' delegate', чтобы добавить обработчики событий, как предлагалось @Tatu. который будет работать и для вновь вставленных элементов. – Anurag

+0

Я, наконец, понял, что случилось с синтаксисом TATU. Спасибо за обновление. Спасибо всем за помощь! :) Задача решена. – Kirby

0
$(".redx").click(function(){ 
    $(this).parent().hide(); 
}); 
+0

onclick, похоже, не стреляет. – Kirby