jQuery - 链接自定义函数

Fre*_*ers 5 javascript jquery method-chaining

我想知道如何链接我的自定义函数并维护'this'的上下文.

例:

$.fn.foo = function() {
  var html = '<div class="foo"></div>';
  if ($(this).hasClass(somthing) {
    $(this).prepend(html);
  }
}

$.fn.bar = function() {
  var html = '<h3>bar</h3>';
  $(this).find('.foo').prepend(html);
}

$('body').foo().bar();
Run Code Online (Sandbox Code Playgroud)

当我尝试使用此代码时,我得到一个TypeError:无法读取未定义的属性"bar"

Sat*_*pal 10

您需要返回当前元素上下文,即this从您自定义方法返回.

$.fn.foo = function() {
  var html = '<div class="foo"></div>';
  if ($(this).hasClass('somthing')) {
    $(this).prepend(html);
  }
  return this; //The magic statement
}

$.fn.bar = function() {
  var html = '<h3>bar</h3>';
  $(this).find('.foo').prepend(html);
  return this; //The magic statement
}

$('body').addClass('somthing').foo().bar();
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)