2010-12-27 18 views
5
<div id="conversations-uCount">0</div> 
<script type="text/javascript"> 
$(document).ready(function() { 
    $('#conversations-uCount').data('UnreadIDs', '1'); 
}); 
</script> 

UnreadIDが変更されたときにいつでも関数を実行できるようにバインドを設定するにはどうすればよいですか?jQueryデータバインドにバインドする方法は?

おかげ

答えて

4

jQuery 1.4.4+には、イベントtriggered for this, changeDataがあります。

$('#conversations-uCount').bind("changeData", function() { 
    //data changed, do something, for example: 
    alert("Data changed!, new value for UnreadIDs: " + $.data(this, 'UnreadIDs')); 
}); 

You can test it out here:それはあなたがオブジェクト上で扱っているデータのみなら、あなたのハンドラは同じくらい簡単です。

+0

素晴らしい - 私は1.4.4でこの追加を知らなかった!良いニュース。 – gnarf

+0

+1これを指摘してください。 – karim79

0

はい時計object.watchが、その標準ではないという関数があり、私はあなたが単純なプラグインでそれを行う可能性が想像何あなたが探しはここObject.watch() for all browsers?

1

を見つけることができると思う:

その後
$.fn.dataTrigger = function(name, value, callback) { 
    $(this).data(name, value); 
    callback(name, value); 
    return this; 
}; 

$('#conversations-uCount').dataTrigger('UnreadIDs', '1', myFunc); 

デモ:http://jsfiddle.net/karim79/q6apA/1/

+0

ここで何が起こっているのか分かりませんか? – AnApprentice

+0

@AnApprentice - のように、データの書き込み時に(そして '.data'ではなく' .dataTrigger'を使って)いくつかのメソッドを適用します。私はあなたのQを理解することを願っています:) – karim79

関連する問題