From ce9920a9ff6906c6b3b9ee20a2154658d1cae181 Mon Sep 17 00:00:00 2001 From: Ben Ogle Date: Fri, 27 Sep 2013 14:33:39 -0700 Subject: [PATCH] Use jquery's hidden code in our isHidden() --- src/jquery-extensions.coffee | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/jquery-extensions.coffee b/src/jquery-extensions.coffee index c5bb6b568..c749b1ce5 100644 --- a/src/jquery-extensions.coffee +++ b/src/jquery-extensions.coffee @@ -35,7 +35,21 @@ $.fn.isOnDom = -> @closest(document.body).length is 1 $.fn.isVisible = -> - @length > 0 and @css('display') != 'none' + !@isHidden() + +$.fn.isHidden = -> + # Implementation taken from jQuery's `:hidden` expression code: + # https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js + # + # We were using a pseudo selector: @is(':hidden'). But jQuery's pseudo + # selector code checks the element's webkitMatchesSelector, which is always + # false, and is really really really slow. + + elem = this[0] + + return null unless elem + + elem.offsetWidth <= 0 and elem.offsetHeight <= 0 $.fn.isDisabled = -> !!@attr('disabled')