【问题标题】:Create JavaScript / jQuery function to use in certain way创建 JavaScript / jQuery 函数以某种方式使用
【发布时间】:2014-12-21 18:50:59
【问题描述】:

如何创建一个 JavaScript 或 jQuery 函数来使用类似

var return = result.function('param','parameter');

我指的是像一些 jQuery 库这样可以像这样使用的函数(例如 Slider)。

$('element').slider(options);

我正在尝试制作一个函数来获取动态内容,到目前为止我所拥有的是 =

getdata = function(url,param){
  $.ajax({
    url:url,
    success:function(result){
      return result;
    }
  });
}

$('element').getdata('example.com/example.txt','parameter=1');

这就是我最终需要使用它的方式。

我有什么办法可以完成这项工作吗?

【问题讨论】:

  • 你需要写一个jquery插件。你可以找到一个好的 startkit here
  • wow thx sina 这对以后肯定有很大帮助:)
  • 注意你这里的操作,ajax调用是异步的,返回不会做你认为的做的!
  • @DaveNewton 是的,这是正确的。因为这一点,我正在写一个答案

标签: javascript jquery dynamic


【解决方案1】:

http://learn.jquery.com/plugins/basic-plugin-creation/

根据本指南,您可以向$.fn 对象添加函数。在他们的例子中:

$.fn.greenify = function() { this.css( "color", "green" ); }; $( "a" ).greenify();

您可以使用this 访问从选择器检索到的底层javascript 元素,也可以使用$(this) 将它们转换为jQuery 对象。

对于你的功能,你会想要做这样的事情:

$.fn.getdata = function(url, param) { $.ajax({ url:url, success:function(result){ return result; } }); }; $('element').getdata('example.com/example.txt','parameter=1');

如果您不使用选定的元素,则没有太多理由这样做。

【讨论】:

    【解决方案2】:

    你可以为此操作编写一个基本的 jquery 插件

    $.fn.getdata= function(url,parameters) {
        that = $(this);
    
    $.ajax({
         url:url+"?"parameters,
         data 
           success:function(result){ 
          that.text(result); 
           } });
        };
    

    这样称呼它

    $('element').getdata('example.com/example.txt','parameter=1');
    

    【讨论】:

      【解决方案3】:

      这还取决于您是否希望您的函数可链接,以及您希望如何初始化插件。对于您上面的示例,您实际上并不需要链接,因为该函数未使用该元素。但是,我会这样做:

      (function($) {
      
          $.fn.getdata = function(params) {
      
              // set default settings and merge what is passed through in params
              var settings = $.extend({
                  url : "http://defaultURL.com",
                  success : function(result) {
                      return result;
                  }
              }, params);
      
              // the ajax call
              $.ajax(settings);
      
              // return the original jQuery object again to enable chaining
              return this;
          }
      
      }(jQuery));
      

      上面创建了一个将 jQuery 作为参数传递的自调用函数,这可以防止与您可能​​也使用 $ 作为引用的其他库发生冲突。

      使用jQueryextend将两个对象合并在一起,也就是参数。

      那么就可以调用上面的函数了:

      $(element).getdata({
          url : 'http://somedifferenturl.com'
      });
      

      或者

      $(element).getdata({
          url : 'http://somedifferenturl.com',
          success : function(result) {
              console.log(result);
          }
      });  
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-19
        • 1970-01-01
        相关资源
        最近更新 更多