jquery 插件多实例不起作用

发布于 2024-12-22 06:07:38 字数 905 浏览 0 评论 0 原文

我已经编写了 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>

I have written 1-2 jquery plugins but all of them fails when i try to use multiple instances....i didnt find any solution. Please take a look at below code, if u create 2 instances on this plugin its not working....whats wrong with this code. what makes plugin able to run multiple instances ??

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

涙—继续流 2024-12-29 06:07:38

问题就在这里:

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

你忘记用var声明obj。它将是一个全局变量 - 每次调用 .truncate() 时都会被覆盖。这应该会更好:

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

顺便说一句,在空 jQuery 对象 ($()) 上调用 .ready()官方不推荐。使用这个:

$(function(){
    …
});

或这个:

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

代替。

The problem is right here:

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

You forgot to declare obj with var. It will be a global variable — and will get overwritten each time .truncate() is called. This should work better:

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

By the way, calling .ready() on an empty jQuery object ($()) is officially not recommended. Use this:

$(function(){
    …
});

or this:

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

instead.

雪落纷纷 2024-12-29 06:07:38

尝试这个作为基础..

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

Try this as a foundation..

(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();
}); 
听,心雨的声音 2024-12-29 06:07:38
$(document).ready(function(){  
    $('#t1').truncate();
    $('#t2').truncate();
   });    

这可能会有所帮助: http://blog.jeremymartin .name/2008/02/building-your-first-jquery-plugin-that.html

$(document).ready(function(){  
    $('#t1').truncate();
    $('#t2').truncate();
   });    

This might help: http://blog.jeremymartin.name/2008/02/building-your-first-jquery-plugin-that.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文