2009-03-10 27 views
20

içinde .click olay üzerine jQuery Bunları fonksiyonlara sahip tıklama

$(function(){ 
    TargetWorksheet.toggle_child_locations(2); 
    $("#location-toggle-2").click(function(){ 
    TargetWorksheet.get_child_locations(2,1); 
    }); 
}); 

Ben de '+' bağlantısının bir tıklama etkinliğine eklemek

(# konum geçiş -2), çocuk verilerini değiştirir. İlk tıklamada, çocuk verisini almak için ajax araması yapmak istiyorum, ama sonra sadece # geçiş-toggle-2 üzerinde .click'in üzerine yazmak istiyorum, böylece sadece geçiş yapar ve ajax çağrısını yapmaz . Yukarıdaki kod çalışmıyor, .click'in üzerine yazılmıyor gibi görünüyor ve her seferinde ajax araması yapıyor.

Bir öğenin .click olayının üzerine nasıl yazabileceğimi bilen var mı? Ayrıca, $("#location-toggle-"+id).click(TargetWorksheet.toggle_child_locations(id)); 'u da denedim ve bazı sebeplerden ötürü yinelemeli olarak tekrar tekrar değişmeye devam ettim.

Düşünceler?

cevap

62

orada kaçırdığını tek şey değil varolan bir yazar, .click()kullanarak yeni işleyicisi denir her zaman ekler olmasıdır.

$("#location-toggle-"+id).unbind()'u kullanarak, yeni öğe eklemeden önce bu öğe üzerindeki işleyicileri temizleyebilirsiniz ve beklediğiniz gibi çalışmalıdır.

+8

'unbind ("click") işlevini kullanmak daha iyi olurdu; bu yalnızca "click" olay türünü geçersiz kılar. Bu özellikle 'button() 'gibi JQueryUI widget'ları kullanılırken kullanışlıdır, bu durumda sadece tıklamayı açmak ve' hover 'gibi diğer etkinlikleri tutmak istediğinizde .. –

+5

Zincirleme hakkında unutma. Bunu genellikle yapıyorum: $ ("#ElementElement"). Off ("klik"). On ("klik", işleyici); 'Bu kod biraz daha temiz yapar – Nick

İlgili konular