Некоторые вопросы о 25 подсказках jQuery

Попробуйте сделать это:

AudioManager manager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
if(manager.isWiredHeadsetOn())
{
    manager.setWiredHeadsetOn(false);
    manager.setSpeakerphoneOn(true); 
    manager.setRouting(AudioManager.MODE_CURRENT, AudioManager.ROUTE_SPEAKER, AudioManager.ROUTE_ALL);  
    manager.setMode(AudioManager.MODE_CURRENT); 
}

Вам понадобится это разрешение:

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
5
задан Jourkey 9 June 2009 в 18:26
поделиться

4 ответа

9 - Дайте вашим селекторам контекст:

 var selectedItem = $ ('# listItem' + i , $ ('. myList'));

v / s

 var selectedItem = $ ('# listItem' + i);

Согласно статье первый должен быть быстрее. Но я не понимаю, как это может быть ...

Прежде всего, доступ по идентификатору - один из самых быстрых способов добраться до элемента. Это просто поиск из глобальной хеш-таблицы идентификаторов. Добавление к нему контекста не должно прибавлять скорости. Поиск контекста должен занять дополнительное время, и поэтому первый пример должен быть медленнее.

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

Что касается этого:

 var selectedItem = $ ('. myList> #listItem' + i);

Скорость должна быть примерно такой же, как у первой. И, согласно моим измерениям, он действительно примерно такой же, только немного быстрее.

Но конкретный контекст может быть полезен при работе с другими типами селекторов, особенно если вы используете его повторно, например:

var ctx = selectedItem = $('.myList')
for (var i=0; i<1000; i++) {
    var selectedItem = $('.listItem' + i, ctx);
}

В этом примере это дает вам значительный прирост скорости.

Как и все остальное, связанное с производительностью - вам нужно измерить, прежде чем вы узнаете, применимо ли что-то в вашей конкретной ситуации.

Сколько обработчиков - это время, когда вы должны начать использовать делегирование событий?

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

4
ответ дан 14 December 2019 в 04:46
поделиться

У меня может быть информация о зарплате в моих таблицах, и я не хочу, чтобы мои доверенные базы данных видели. Столкнувшись с той же проблемой, которую мы сузили, есть варианты:

1- Шифрование вне SQLServer перед вставкой и обновлением и дешифрование после выбора. то есть: Использование шифрования .net. Обратная сторона: вы теряете некоторые возможности индексации и поиска, не можете использовать подобные и промежуточные.

2- Используйте сторонние инструменты (на уровне io), которые блокируют вход в базу данных, если не указан пароль. то есть: www.Blockkk.com Оборотная сторона: вам нужно будет доверять стороннему инструменту, установленному на вашем сервере. Он может не успевать за исправлениями SQL Server и т. Д.

3- Используйте решение для аудита, которое будет отслеживать выбор, вставку, удаление и т. Д. И будет уведомлять (по электронной почте или в журнале событий), если нарушения произошло. Примером нарушения может быть dba, выполняющая выбор в вашей таблице зарплат. затем запустите dba и измените зарплату всем.

9 - Дайте вашим селекторам контекст:

Первый вариант более сложный, так как таким образом вы можете передать элемент iframe и выполнить поиск в нем. Я не думаю, что есть разница в производительности.

Из документации:

JQuery (выражение, контекст)
Основная функциональность jQuery сосредоточена вокруг этой функции. Все в jQuery основано на этом или каким-то образом использует это. Наиболее простое использование этой функции - передача выражения (обычно состоящего из CSS), которое затем находит все совпадающие элементы.

По умолчанию, если контекст не указан, $ () ищет элементы DOM в контексте текущий HTML-документ. Если вы укажете контекст, например элемент DOM или объект jQuery, выражение будет сопоставлено с содержимым этого контекста.

14 - Еще лучше, используйте jQuery ' s внутренний метод data () для хранения состояния:

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

PS. Вы можете найти дополнительную информацию здесь

2
ответ дан 14 December 2019 в 04:46
поделиться

Для (9)

Поскольку должен быть только один элемент с заданным id , дополнительные вещи не кажутся необходимыми. .. если только вы не проверяете, есть ли он на самом деле (в этом точном вложении)

Если все наоборот (например, контекст очень специфичен, и выбранные элементы) вы want довольно общие) Я вижу, как это поможет ...

//LI elems with CSS class "foo"
//but only inside the element with the ID "onlyInHere"
$('li.foo', '#onlyInHere')
1
ответ дан 14 December 2019 в 04:46
поделиться

В какой-то момент мы меняли некоторый код Acrobat JS, выполняя замену текста в простом (незашифрованном) PDF. Хитрость заключалась в том, что длина каждого блока PDF была жестко запрограммирована в документе. Итак, мы не могли изменить количество символов. Мы просто добавили бы лишние пробелы.

Он отлично работал, код JS выполнил все.

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

Относительно №13:

Я думаю, что пример, представленный в документе, на который вы ссылаетесь, выполняет свою работу, но я постараюсь уточнить немного подробнее. Классы - это распространенный и стандартный способ прикрепления дополнительной информации к узлам HTML. Давайте возьмем панель вкладок в качестве примера: предполагая, что у вас есть стандартный класс «вкладка», который применяется к каждой вкладке в панели вкладок, вы можете добавить дополнительный класс к одной из вкладок, чтобы указать, что она в данный момент выбрана. Добавление дополнительного класса под названием "selected" позволит вам применить другой стиль к выбранной вкладке и запросить панель вкладок с помощью jQuery для некоторой дополнительной логики (например: проверить, какая вкладка в данный момент выбрана для выполнения HTTP-запроса и получить содержимое для этой вкладки).

Относительно №14:

Классы ограничены по типу и количеству данных, которые вы можете (или должны) хранить в них. Данные - это более гибкий способ хранения больших объемов данных состояния для элементов HTML.

1
ответ дан 14 December 2019 в 04:46
поделиться
Другие вопросы по тегам:

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