2010-11-20 9 views
3

特定のリンクセットがクリックされたときに、関数を呼び出すためにdelegateを使用しようとしています。 私はもう前に他のページで使っていました。それはそこで働いた。しかし、今回は、問題がどこにあるのかわからなくても。jQueryデリゲートが機能していませんか?

私のリンクが動的に生成された、彼らは

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

のように見えるとjQueryデリゲート機能があり、

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

を更新:

私は両方のバージョンを試してみましたが、私は思いますそれを動作させることができません!

$("#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); 

上記コードは$(document).ready(function(){});です。あれは正しいですか?? また別のjsファイルに入れてみました。私はそれを働かせることはできません。

私の問題について考えてみましょう!

答えて

5

実際のコードの順序であれば、関数式が初期化される前にそれを渡そうとしています。

それらをリバース

、それが動作するはずです:

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:動作しません。私も '.live()'を使うのに疲れました。そのも動作しません。それはあなたに何か意味がありますか?とにかく私は 'try'の結果で私の質問を更新しました。 –

+0

@CS 1.6 - '#albumHolder'要素も動的に作成されていますか?また、このプロジェクトで古いバージョンのjQueryを使用している可能性はありますか? – user113716

+0

#@ patrick dw:はい! –

4

定義する前に関数式を使用します。これは機能しません。 delegate()呼び出しで使用する前に、正規関数宣言(function loadAlbum() { /* ... */ })を使用するか、this.loadAlbumthis.loadAlbum = function() { /* ... */ })を定義してください。

+0

私はそれを試してみました。それは私のために働いていない。私は結果に質問を更新しました。 –

関連する問題