js: Require a container in ui.focusElement()

refs #8615
This commit is contained in:
Johannes Meyer 2015-08-06 13:08:36 +02:00
parent b9e0a80479
commit b8b649f179
2 changed files with 6 additions and 13 deletions

View File

@ -389,7 +389,7 @@
// This is an anchor only
if (href.substr(0, 1) === '#' && href.length > 1
&& href.substr(1, 1) !== '!') {
icinga.ui.focusElement(href.substr(1));
icinga.ui.focusElement(href.substr(1), $a.closest('.container'));
return;
}

View File

@ -126,16 +126,16 @@
* Focus the given element and scroll to its position
*
* @param {string} element The name or id of the element to focus
* @param {object} $container Optional, the container containing the element
* @param {object} $container The container containing the element
*/
focusElement: function(element, $container) {
var $element = $('#' + element);
var $element = $('#' + element, $container);
if (! $element.length) {
// The name attribute is actually deprecated, on anchor tags,
// but we'll possibly handle links from another source
// (module etc) so that's used as a fallback
$element = $('[name="' + element.replace(/'/, '\\\'') + '"]');
$element = $('[name="' + element.replace(/'/, '\\\'') + '"]', $container);
}
if ($element.length) {
@ -143,16 +143,9 @@
$element.attr('tabindex', -1);
}
if (typeof $container === 'undefined') {
$container = $element.closest('.container');
}
$element.focus();
if ($container.length) {
$container.scrollTop(0);
$container.scrollTop($element.first().position().top);
}
$container.scrollTop(0);
$container.scrollTop($element.first().position().top);
}
},