Sha256: cc9815bc3cba3b6522404dd817302996e64e444f7f0409c1d2f71920cea331fa

Contents?: true

Size: 1.68 KB

Versions: 84

Compression:

Stored size: 1.68 KB

Contents

/* -*- coding: utf-8 -*-
 *
 * jquery.outerclick.js
 * Copyright 2014 whiteleaf. All rights reserved.
 *
 * Usage:
 *   $("#menu").outerClick(function() {
 *     $(this).hide();  // do something
 *   });
 *   $("#menu").outerClickOne(function() {
 *     // once process
 *   });
 *   either
 *   $("#menu").outerClick(function(){}, "one");
 */

(function($) {
  "use strict";
  var outerClick = function(obj, callback, bind_func) {
    var self = this;
    $(document)[bind_func]("click", function(e) {
      var pos = self.getEventPosition(e);
      var element = self.elementFromPoint(pos);
      if (obj !== element) {
        if (!self.searchTargetUpstream(element, obj)) {
          callback.apply(obj);
        }
      }
    });
  };
  $.extend(outerClick.prototype, {
    elementFromPoint : function(pos) {
      var doc = $(document);
      var element = document.elementFromPoint(pos.x - doc.scrollLeft(),
                                              pos.y - doc.scrollTop());
      return element;
    },
    getEventPosition : function(event) {
      return { x: event.pageX, y: event.pageY };
    },
    searchTargetUpstream : function(element, target) {
      var parent = $(element).parent();
      if (parent.length === 0) return null;
      if (parent[0] === target) return parent;
      return this.searchTargetUpstream(parent, target);
    },
  });
  $.fn.outerClick = function(callback, bind_func) {
    if (typeof bind_func === "undefined") bind_func = "on";
    return this.each(function() {
      new outerClick(this, callback, bind_func);
    });
  };
  $.fn.outerClickOne = function(callback) {
    return this.each(function() {
      new outerClick(this, callback, "one");
    });
  }
}(jQuery));

Version data entries

84 entries across 84 versions & 1 rubygems

Version Path
narou-3.9.1 lib/web/public/resources/jquery.outerclick.js
narou-3.9.0 lib/web/public/resources/jquery.outerclick.js
narou-3.8.2 lib/web/public/resources/jquery.outerclick.js
narou-3.8.1 lib/web/public/resources/jquery.outerclick.js
narou-3.8.0 lib/web/public/resources/jquery.outerclick.js
narou-3.7.2 lib/web/public/resources/jquery.outerclick.js
narou-3.7.1 lib/web/public/resources/jquery.outerclick.js
narou-3.7.0 lib/web/public/resources/jquery.outerclick.js
narou-3.6.0 lib/web/public/resources/jquery.outerclick.js
narou-3.5.1 lib/web/public/resources/jquery.outerclick.js
narou-3.5.0.1 lib/web/public/resources/jquery.outerclick.js
narou-3.5.0 lib/web/public/resources/jquery.outerclick.js
narou-3.4.8 lib/web/public/resources/jquery.outerclick.js
narou-3.4.7.1 lib/web/public/resources/jquery.outerclick.js
narou-3.4.7 lib/web/public/resources/jquery.outerclick.js
narou-3.4.6.1 lib/web/public/resources/jquery.outerclick.js
narou-3.4.6 lib/web/public/resources/jquery.outerclick.js
narou-3.4.5 lib/web/public/resources/jquery.outerclick.js
narou-3.4.3 lib/web/public/resources/jquery.outerclick.js
narou-3.4.2 lib/web/public/resources/jquery.outerclick.js