У меня проблема с фальсификацией щелчка якоря с помощью jQuery: почему моя папка появляется при первом нажатии на кнопку ввода, а не во второй или третий раз?
Вот мой код:
<input onclick="$('#thickboxId').click();" type="button" value="Click me" />
<a id="thickboxId" href="myScript.php" class="thickbox" title="">Link</a>
Он всегда работает, когда я нажимаю непосредственно на ссылку, но не, если я пытаюсь активировать Thickbox через кнопку ввода. Это в ФФ. Для Chrome это работает каждый раз. Есть намеки?
Ответы:
Старайтесь не включать подобные вызовы в jQuery. Поместите тег сценария в верхней части страницы для привязки к
click
событию:Редактировать:
Если вы пытаетесь смоделировать пользователя, физически нажимающего на ссылку, я не верю, что это возможно. Обходной путь должен был бы обновить
click
событие кнопки, чтобы изменитьwindow.location
в Javascript:Изменить 2:
Теперь, когда я понял, что Thickbox - это пользовательский виджет jQuery UI, я нашел инструкции здесь :
Инструкции:
Создать элемент ссылки (
<a href>
)Присвойте ссылке атрибут класса со значением Thickbox (
class="thickbox"
)В
href
атрибуте ссылки добавьте следующий якорь:#TB_inline
В
href
атрибуте после#TB_inline
добавления добавьте следующую строку запроса на привязку:? Высота = 300 & ширина = 300 & inlineId = myOnPageContent
Измените значения высоты, ширины и inlineId в запросе соответствующим образом (inlineID - это значение идентификатора элемента, содержащего содержимое, которое вы хотите отобразить в ThickBox.
При желании вы можете добавить modal = true в строку запроса (например
#TB_inline?height=155&width=300&inlineId=hiddenModalContent&modal=true
), чтобы закрытие ThickBox потребовало вызоваtb_remove()
функции из ThickBox. Посмотрите пример скрытого модального содержимого, где вы должны нажать да или нет, чтобы закрыть ThickBox.источник
.prop()
вместо того,attr()
чтобы получить разрешенный URL.Что сработало для меня:
источник
focus
вместоclick
:)[0]
указывает на первый элемент массива - селектор возвращает 0 или более элементов при его выполнении. К сожалению,.click()
здесь, похоже, не работает напрямую, так как, по-видимому, другие вызовы применяются к коллекциям элементов из селекторов последовательно во всей структуре.[0]
или.get(0)
то же самое. Они используют версию элемента DOM, а не версию jQuery. В.click()
этом случае функция является не событием щелчка jQuery, а собственным.Я недавно нашел, как вызвать событие щелчка мыши через jQuery.
источник
Этот подход работает на Firefox, Chrome и IE. надеюсь, это поможет кому-то
источник
Хотя это очень старый вопрос, я нашел что-то более легкое, чтобы справиться с этой задачей. Это плагин jquery, разработанный командой разработчиков jquery под названием simulate. Вы можете включить его после JQuery, а затем вы можете сделать что-то вроде
отлично работает в Chrome, Firefox, Opera и IE10. Вы можете скачать его с https://github.com/eduardolundgren/jquery-simulate/blob/master/jquery.simulate.js
источник
simulate()
является то, что он отправляет события jQuery, а также запускает собственное действие браузера. Это в настоящее время правильный ответ +1В заголовке вопроса написано «Как я могу имитировать щелчок якоря в jQuery?». Ну, вы можете использовать методы «trigger» или «triggerHandler», например так:
Не проверенный, этот настоящий сценарий, но я использовал
trigger
et al раньше, и они работали хорошо.ОБНОВЛЕНИЕ
triggerHandler
фактически не делает то, что хочет OP. Я думаю, что 1421968 дает лучший ответ на этот вопрос.источник
Я бы посоветовал взглянуть на Selenium API, чтобы увидеть, как они вызывают щелчок по элементу в браузер-совместимом режиме:
Ищите
BrowserBot.prototype.triggerMouseEvent
функцию.источник
Я считаю, что вы можете использовать:
Это легко вызовет функцию щелчка, фактически не нажимая на нее.
источник
Вам нужно подделать щелчок якоря? С сайта Thickbox:
Если это приемлемо, это должно быть так же просто, как поместить класс Thickbox в сам ввод:
Если нет, я бы порекомендовал использовать Firebug и поместить точку останова в метод onclick элемента привязки, чтобы посмотреть, сработает ли он только при первом щелчке.
Редактировать:
Ладно, я должен был попробовать это для себя, и для меня почти точно ваш код работал как в Chrome, так и в Firefox:
Окно всплывает независимо от того, нажимаю ли я на вход или на элемент привязки. Если приведенный выше код работает для вас, я полагаю, что ваша ошибка лежит в другом месте, и вы пытаетесь изолировать проблему.
Другое, возможно, заключается в том, что мы используем разные версии jquery / Thickbox. Я использую то, что я получил со страницы Thickbox - JQuery 1.3.2 и Thickbox 3.1.
источник
Вы можете создать форму через jQuery или в коде HTML-страницы с действием, которое имитирует вашу ссылку href:
<a id="anchor_link" href="somepath.php">click here</a>.
источник
Чтобы имитировать щелчок на привязке при посадке на страницу, я просто использовал jQuery для анимации свойства scrollTop в поле «
$(document).ready.
Нет необходимости в сложном триггере», и это работает в IE 6 и любом другом браузере.источник
Если вам не нужно использовать JQuery, как я не делаю. У меня были проблемы с кросс-браузерной функцией
.click()
. Поэтому я использую:источник
В Javascript вы можете сделать это
и вы можете использовать его как
источник
Используя скрипт Jure, я сделал это, чтобы легко «кликнуть» столько элементов, сколько вы хотите.
Я просто использовал Google Reader для 1600+ элементов, и он работал отлично (в Firefox)!
источник
createEventObject
в IE это больше для создания объекта события для передачи обработчикам, а не для отправки искусственного события. IEfireEvent
может быть ближеdispatchEvent
, но он будет вызывать только слушателей, а не действия браузера по умолчанию. Однако в IE вы можете просто вызватьclick
метод.JQuery('#left').triggerHandler('click');
отлично работает в Firefox и IE7. Я не проверял это в других браузерах.Если вы хотите активировать автоматические клики, сделайте следующее:
источник
Это не работает на родном браузере Android, чтобы нажать «скрытый элемент ввода (файл)»:
Но это работает:
источник
Пытаясь смоделировать «щелчок» в модульных тестах с помощью спиннера jQuery UI, я не смог заставить работать ни один из предыдущих ответов. В частности, я пытался смоделировать «вращение» выбора стрелки вниз. Я посмотрел на блочные тесты пользовательского интерфейса jQuery, и они используют следующий метод, который работал для меня:
источник