};
/**
- * Returns the fragment part of the URL, including the #. Returns '' if no fragment.
+ * Returns a jQuery selector from a URL's fragement. Defaults to expecting an ID.
*
- * @param {String} url The URL.
+ * Examples:
+ * http://elgg.org/download.php returns ''
+ * http://elgg.org/download.php#id returns #id
+ * http://elgg.org/download.php#.class-name return .class-name
+ * http://elgg.org/download.php#a.class-name return a.class-name
+ *
+ * @param {String} url The URL
+ * @return {String} The selector
*/
-elgg.getUrlFragment = function(url) {
+elgg.getSelectorFromUrlFragment = function(url) {
var fragment = url.split('#')[1];
-
+
if (fragment) {
- return '#' + fragment;
+ // this is a .class or a tag.class
+ if (fragment.indexOf('.') > -1) {
+ return fragment;
+ }
+
+ // this is an id
+ else {
+ return '#' + fragment;
+ }
}
return '';
}
\ No newline at end of file
event.preventDefault();
event.stopPropagation();
- var target = elgg.getUrlFragment($(this).toggleClass('elgg-state-active').attr('href'));
+ var target = elgg.getSelectorFromUrlFragment($(this).toggleClass('elgg-state-active').attr('href'));
var $target = $(target);
// emit a hook to allow plugins to position and control popups
// if the click event target isn't in a popup target, fade all of them out.
$popups.each(function(i, e) {
- var target = elgg.getUrlFragment($(e).attr('href')) + ':visible';
+ var target = elgg.getSelectorFromUrlFragment($(e).attr('href')) + ':visible';
var $target = $(target);
if (!$target.is(':visible')) {
if (!inTarget) {
$popups.each(function(i, e) {
var $e = $(e);
- var $target = $(elgg.getUrlFragment($e.attr('href')) + ':visible');
+ var $target = $(elgg.getSelectorFromUrlFragment($e.attr('href')) + ':visible');
if ($target.length > 0) {
$target.fadeOut();
$e.removeClass('elgg-state-active');