Фокус набора к полю в динамично загруженном DIV

Я сделал это в реальном проекте:

база данных состояла из одной таблицы с одним полем, которое было массивом 50. Это имело индексный набор 'слова' на нем. Все данные были без типов, таким образом, 'словарь' работал как ожидалось. Числовые поля были представлены как символы, и фактическая сортировка была сделана в стороне клиента. (Это все еще возможный иметь несколько полей массива для каждого типа данных в случае необходимости).

логическая схема данных для логических таблиц считалась в той же базе данных с различной строкой таблицы 'типом' (первый элемент массива). Это также поддерживало простое управление версиями в стиле копии на записи с помощью того же поля 'типа'.

Преимущества:

  1. можно перестроить и добавить/удалить столбцы динамично, никакую потребность в дампе/перезагрузке базы данных. Любые новые данные столбца могут быть установлены на начальное значение (фактически) в нулевое время.
  2. Фрагментация минимальна, так как все записи и таблицы являются тем же размером, иногда это дает лучшую производительность.
  3. Вся схема таблицы является виртуальной. Любая логическая схема stucture возможна (даже рекурсивный, или объектно-ориентированный).
  4. Это хорошо для "неперезаписываемого, читайте главным образом, no-delete/mark-as-deleted" данные (большинство веб-приложений на самом деле похоже на это).

Недостатки:

  1. Индексация только полными словами, никаким сокращением,
  2. Сложные запросы возможны, но с небольшим снижением производительности.
  3. Зависит от того, поддерживает ли Ваша предпочтительная система баз данных массивы и словари (она была реализована В прогрессе RDBMS).
  4. Реляционная модель находится только в уме программиста (т.е. только во времени выполнения).

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

41
задан Jan Willem B 30 October 2013 в 13:36
поделиться

5 ответов

The load() function is an asynchronous function. You should set the focus after the load() call finishes, that is in the callback function of load(), because otherwise the element you are referring to by #header, does not yet exist. For example:

$("#display").load("?control=msgs", {}, function() { 
  $('#header').focus();
}); 

I had issues myself even with this solution, so i did a setTimeout in the callback and set the focus in the timeout to make /really/ sure the element exists.

57
ответ дан 27 November 2019 в 00:29
поделиться

Вы пробовали просто выбирать по идентификатору?

$("#header").focus();

Поскольку идентификаторы должны быть уникальными, нет необходимости иметь более конкретный селектор.

12
ответ дан 27 November 2019 в 00:29
поделиться

If

$("#header").focus();

is not working then is there another element on your page with the id of header?

Use firebug to run $("#header") and see what it returns.

3
ответ дан 27 November 2019 в 00:29
поделиться

Динамически добавляемые элементы должны быть добавлены в DOM... clone().append() добавляет его в DOM... что позволяет выбрать его с помощью jquery.

1
ответ дан 27 November 2019 в 00:29
поделиться
$("#display").load("?control=msgs", {}, function() { 
  $('#header').focus();
});

Я пробовал, но он не работает, дайте мне еще совет, чтобы решить эту проблему. спасибо за вашу помощь

3
ответ дан 27 November 2019 в 00:29
поделиться
Другие вопросы по тегам:

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