2009-11-10 2 views
2

Например, в PHP У меня есть список клиентов:Каков правильный способ привязки событий в jQuery?

foreach($clients as $client) 
    echo '<li id="client_'.$client->id.'">' . $client->name . '</li>'; 

Что такое правильный способ связать событие щелчка к каждому элементу списка без использования

onclick="my_function(the_elements_id)" 

прямо в элементе списка ,

ответ

4

при условии, у вас есть с ул ид = "client_list"

$("#client_list li").click(function() 
{ 
    var myid = $(this).attr("id"); // the clicked on items id 
    // do your thing here. 

}): 
+0

удивительным, спасибо – ws0x9

+2

'$ (это) .attr ("ID")' не так эффективно, как 'this.id'. Каждый объект HTML будет иметь атрибут 'id'; вам не нужно jQuery, чтобы смягчить это для вас. – MightyE

+0

okay, спасибо за помощь – ws0x9

0
$(document).ready(function(){ 

    $("li).click(function(){ 
     var id = $(this).attr("id"); 
     your_function(id); //The function you want to run with the object's ID as a parameter. 
    }); 

}); 
1

Вы также можете использовать .bind

Э.Г.

$('#item').bind("click", function() { do something; }); 
4

И очень круто «живой» способ связывания для всех текущих и будущих соответствующих элементов. Это пригодится, если вы используете Ajax и должны повторно привязать событие, чтобы, скажем, изображение, которое вы получаете через ajax.

Подробнее @http://docs.jquery.com/Events/live#typefn

$("p").live("click", function(){ 
    alert($(this).text()); 
}); 
+0

Спасибо! Новый для jQuery, и я ценю помощь. – ws0x9

+0

Да, это здорово, если есть шанс, что разметка будет изменена на лету. Это реализация делегирования. – Nosredna

+0

Используется сегодня. Очень полезно. Спасибо за руководство. – ws0x9