2011-12-18 11 views
1

私は1-2個のjqueryプラグインを作成しましたが、複数のインスタンスを使用しようとするとすべてが失敗します。このプラグインで2つのインスタンスが作成されていれば、このコードで何が問題なのか、以下のコードを見てください。プラグインは複数のインスタンスを実行できるのですか?jquery plugin複数インスタンスが動作しない

<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> 
<html> 
<head> 
</head> 
<script src="jquery.js"></script> 
<script> 
    (function($){ 
    $.fn.truncate = function(options) { 

     return this.each(function() { 
     obj = $(this); 
     var body = obj.html(); 

    $(obj).focus(function(){ 
     alert($(obj).attr("id")); 
    });  

     }); 
    }; 
    })(jQuery); 
    </script> 
<SCRIPT LANGUAGE="JavaScript"> 
<!-- 
    $().ready(function(){ 
    $('#t1').truncate(); 
    $('#t2').truncate(); 
    });  
//--> 
</SCRIPT> 
<body> 
    <input type="text" id="t1"> 
    <input type="text" id="t2"> 
</body> 
</html> 

答えて

1

は、問題はここで

​​
+0

Ahhhaaaaこれははっきりしています...私もオプションを追加しようとしました...その作業...おかげで友人.....私はプラグインでそれを実装するために、今すぐサポートしません単一インスタンス。 –

4

..基盤としてこれを試してみてくださいobj wit h var。これはグローバル変数となり、.truncate()が呼び出されるたびに上書きされます。これは、より良い動作するはず:

return this.each(function() { 
    var obj = $(this); 
    … 

ところで、空のjQueryオブジェクト($())に.ready()を呼び出すことofficially not recommendedです。代わりに

$(document).ready(function(){ 
    … 
}); 

$(function(){ 
    … 
}); 

またはこの:これを使用してください。

+0

+1本当に素晴らしい有能な答えです。 – tim

関連する問題