2010-11-20 24 views
3

Belirli bir bağlantı kümesi tıklandığında bir işlevi çağırmak için temsilci kullanmaya çalışıyorum. Başka bir sayfada daha önce kullanmıştım. Orada çalıştı. Ancak, bu sefer problemin nerede olduğunu bile bulamadım. Ben her iki sürümü çalıştıjQuery delegate çalışmıyor mu?

, Ama öyleyim:

Benim bağlantılar dinamik olarak üretildi, bunlar

$(document).ready(function(){ 
$("#albumHolder").delegate('a.thumbLink', 'click', this.loadAlbum);//albumHolder is div ID that holds all the <a> elements 

this.loadAlbum = function(){ 
    var id = this.id; 
    var number = id.lastIndexOf("-"); 
    var alubmName = id.subString(0, number); 
    alert(albumName); 
} 
}); 

Update,

<a class="thumbLink" href="#" id="My HomeTown-1"><small>My HomeTown</small></a> 

Ve jQuery temsilci işlevidir benziyor Çalışması mümkün değil!

$("#albumHolder").delegate('a.thumbLink', 'click', function loadAlbum(){ 
    var id = this.id; 
    var number = id.lastIndexOf("-"); 
    var alubmName = id.subString(0, number); 
    alert(albumName); 
}); 



    this.loadAlbum(){ 
    var id = this.id; 
    var number = id.lastIndexOf("-"); 
    var alubmName = id.subString(0, number); 
    alert(albumName); 
} 
$("#albumHolder").delegate('a.thumbLink', 'click', this.loadAlbum); 

Yukarıdaki kod $(document).ready(function(){}); bulunmaktadır. Bu doğru mu?? Ayrıca bunları ayrı bir js dosyasına koyarak denedim. Çalışamıyorum.

Sorunum hakkında herhangi bir fikir !!!

cevap

5

Gerçek kodunuzun sırası buysa, işlev ifadesi başlatılmadan önce iletmeye çalışıyorsunuz.

onları Ters

ve çalışması gerekir:

this.loadAlbum = function(){ 
    var id = this.id; 
    var number = id.lastIndexOf("-"); 
    var alubmName = id.subString(0, number); 
    alert(albumName); 
} 
$("#albumHolder").delegate('a.thumbLink', 'click', this.loadAlbum); 
+0

# @ patrick dw: Çalışmıyor. Ayrıca .live() 'yi kullanmaktan da yoruldum. Ayrıca çalışmıyor. Sana bir şey ifade ediyor mu? Neyse, sorumu "try" sonuçlarıyla güncelledim. –

+0

@CS 1.6 - '# albumHolder' öğesi dinamik olarak oluşturuldu mu? Ayrıca, bu projede jQuery'nin eski bir sürümünü kullanmanın bir şansı var mı? – user113716

+0

# @ patrick dw: Evet! –

4

Tanımlamadan önce bir işlev ifadesi kullanıyorsunuz. Bu işe yaramıyor. Düzenli bir işlev bildirimi kullanın (function loadAlbum() { /* ... */ }) veya delegate() çağrısında kullanmadan önce this.loadAlbum (this.loadAlbum = function() { /* ... */ }) tanımlayın.

+0

ben denedim. Benim için çalışmıyor. Soruyu sonuçlarla güncelledim. –