JQuery плагин несколько экземпляров не работает - PullRequest
1 голос
/ 18 декабря 2011

Я написал 1-2 плагина jquery, но все они не работают, когда я пытаюсь использовать несколько экземпляров .... Я не нашел никакого решения. Пожалуйста, посмотрите на приведенный ниже код, если вы создаете 2 экземпляра на этом плагине, он не работает .... что не так с этим кодом. что делает плагин способным запускать несколько экземпляров ??

<!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>

Ответы [ 3 ]

4 голосов
/ 18 декабря 2011

Проблема здесь:

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

Вы забыли объявить obj с var. Это будет глобальная переменная, которая будет перезаписываться при каждом вызове .truncate(). Это должно работать лучше:

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

Кстати, вызов .ready() для пустого объекта jQuery ($()) официально не рекомендуется . Используйте это:

$(function(){
    …
});

или это:

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

вместо.

1 голос
/ 18 декабря 2011

Попробуйте это как основу ..

(function($){  
     $.fn.truncate = function(){  

          this.each(function(){  

              //work on each element here
              console.log($(this).attr('id'));

          });

          return this;

     };  
})(jQuery);





$(document).ready(function(){  
    $('#t1,#t2').truncate();
}); 
0 голосов
/ 18 декабря 2011
$(document).ready(function(){  
    $('#t1').truncate();
    $('#t2').truncate();
   });    

Это может помочь: http://blog.jeremymartin.name/2008/02/building-your-first-jquery-plugin-that.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...