2017-05-15 63 views
1

使用$(本)这是我的代码如何在自定义jQuery插件

$('#J_todayComm').myScroll({ 
    ajaxUrl: $(this) 
}); 

我想获得$(this) - >$('#J_todayComm'),但它是$(doucmen)

我的插件代码myScroll.js

$.fn.myScroll = function (options) { 
    var s = $.extend({ 
     debug: false, 
     threshold: 65, 
     loading: false, 
     ajaxUrl: '', 
     ajaxMethod: 'GET', 
     ajaxData: {}, 
     loadSuccess: function() { 
     }, 
     template: function() { 
      console.error("Need Template"); 
     } 
    }, options); 
    console.log(s.ajaxUrl); //I want it is $('#J_todayComm') 
    // jquery对象 
    var $self = this; 
    // 原生DOM对象 
    var self = this[0]; 
    ...... 
    function getDate() { 
     if (!s.ajaxUrl) { 
      console.error('Need url'); 
      return ''; 
     } 
     $.ajax(s.ajaxUrl, { 
      method: s.ajaxMethod, 
      data: s.ajaxData, 
      dataType: 'json', 
      success: function (res) { 
       ... 
      }, 
      error: function() { 
       ... 
      } 
     }); 
    } 

    return $self; 

}; 

如何编写代码? Thx大家。

回答

1

要使this关键字引用选择器中的元素,您需要更改呼叫的范围。你可以做的是通过元素迭代使用each()

$('#J_todayComm').each(function() { 
    var $el = $(this); 
    $el.myScroll({ 
    ajaxUrl: $el.data('ajax-url'), 
    // other settings... 
    }); 
}); 
+0

Thx,你的灵感来自我 –

0

代码

$.fn.extend({ 
    myScroll:function(){ 
    console.log(this);//這是你的本物件了 
    } 
}) 

$('#J_todayComm').myScroll(); 

变化的其他方式来延长FN那么你不依赖于生产地的jQuery funtion并能得到你对象的this(没有你的options)。

+0

Thx,楼上的也许是我想要的 –