Функция JQuery getOffset возвращает неопределенное

0
function getContaineroffset(from){
    (from= 'diagonal') ? from= 'left' : from = 'top';

    var p = $("#container");
    var position = p.offset();

    return position.from;
}

У меня есть функция getContaineroffset() и я хочу вернуться, например: значение position.left.

Этот код возвращается undefined.

Как я могу это исправить?

Теги:
position
offset

2 ответа

1

Функция настроена неудобно, а также не будет вести себя так, как ожидалось, по нескольким причинам.

(from= 'diagonal') ? from= 'left' : from = 'top';

В первой части заявления, вы присваиваете 'diagonal', чтобы from, а не проверять на равенство.

Это также может быть упрощено для чего-то подобного.

from = (from === 'diagonal')? 'left': 'top';

Наконец, position.from получает доступ к литеральному свойству from position. Если вы хотите получить доступ к свойству в положении, когда ключ значения from, вы должны использовать этот синтаксис.

position[from];

Я лично буду реализовывать эту функцию следующим образом.

function getContainerOffset(from) {
    var property = (from === 'diagonal') ? 'left' : 'top';

    return $('#container').offset()[property];
}
1

. оператор предназначен для использования с идентификаторами. Если вы хотите получить доступ к объекту с помощью динамической строки, вы должны использовать [] нотацию.

Поэтому вам нужно заменить:

return position.from;

с:

return position[from];
  • 0
    Спасибо :) это работает
  • 0
    @ user2992577 Вы можете выбрать этот ответ как «принятый», если хотите выразить свою благодарность.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню