Оставленное смещение встроенного элемента с помощью jQuery

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

В нашем корпоративном хранилище данных мы получаем данные из многих устаревших систем. В результате мы видим, что используется много мусорных данных.

Возьмем наш случай, когда у нас есть географический идентификатор, который представляет собой заполненное нулями 4-значное «числовое» значение. Это поле часто используется для объединения таблиц.

Я бы выбрал один из двух подходов: 1) объявить столбец как поле char длины 4 и добавить CONSTRAINT LIKE '[09] [09] [09] [09]' 2) определить его как числовую длину 4 и, если пользователи этого хотят, отформатируйте значение только при отображении.

Подход с цифрой 1 избавляет вас от необходимости постоянного форматирования, что не составляет особого труда, но если вы часто фильтруете и даже индексируете / объединяете столбец, я бы сказал, что у нас нет варианта №2.

Третья причина в том, что мой опыт заключается в том, что люди просто ленивы, когда дело доходит до добавления ограничений в базу данных, или они невежественны. Я думаю, что это больше лень, лично. Я считаю, что существующие ограничения в основном применяются как изменения в приложении, которое первоначально собирает данные, и эти изменения не применяются единообразно.

В результате наше хранилище данных в конечном итоге получает все виды вариаций, включая непоследовательное предварительное заполнение нулями или обоснование значения.

Когда вы определяете что-то как INTEGER, вы автоматически получаете более эффективное хранилище, особенно при индексации по столбцу, а также и редактирования, которое все понимают, и, скорее всего, будут последовательно применяться в унаследованных системах разработчиками баз данных с различными возможностями.

У меня нет проблем с вариантом № 1, за исключением использования поля в индексе и моей озабоченности подходом, когда вы принимаете поле как афа-число, люди склонны добавлять в него больше мусора.

Взять, к примеру, наш идентификатор сотрудника Peoplesoft. Кто-то решил добавить «X» перед «числом», заполненным нулями, состоящим из 6 символов, чтобы обозначить, что работник является подрядчиком. Это нарушает мою личную практику не объединять отдельные части информации в одно поле. Это вызвало всевозможные проблемы несоответствия в разных системах. Если бы это поле было числовым, никто бы не попытался это сделать.

Комментарии?

7
задан philly77 15 June 2009 в 12:28
поделиться

3 ответа

Вот что происходит:

Diagram

Поскольку встроенный элемент занимает несколько строк, jQuery предоставит вам крайнюю левую позицию этого элемента, а не смещение начала элемента.

Чтобы обойти это, попробуйте этот плагин:

jQuery.fn.inlineOffset = function() {
    var el = $('<i/>').css('display','inline').insertBefore(this[0]);
    var pos = el.offset();
    el.remove();
    return pos;
};

Плагин создаст временный элемент и вставит его непосредственно перед целевым элементом - затем он вернет смещение этого временного элемента.

Пример использования:

alert( jQuery('strong').inlineOffset().left );
]
26
ответ дан 6 December 2019 в 07:07
поделиться

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

У меня одно из тех ощущений, что, вероятно, есть способ сделать это лучше, чем этот, но первое, что я мог придумать, чтобы обойти эту проблему, - это вставить другой элемент прямо перед и проверьте его положение:

$("<span><span>").insertBefore($('#s')).offset();
0
ответ дан 6 December 2019 в 07:07
поделиться

Я считаю, что смещение относительно документа, а позиция относительно родителя.

http://docs.jquery.com/CSS/position

-1
ответ дан 6 December 2019 в 07:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: