Ответ 1
Прямой вызов собственного DOM onclick
(см. демонстрацию):
$("#test_default")[0].onclick();
Или, без jQuery вообще,
document.getElementById("test_default").onclick();
Update:
Реальная проблема связана с взаимодействием между jQuery .click()
и встроенным кодом onclick
. jQuery .click()
фактически выполняет две вещи: он сначала запускает любые обработчики событий, включая код inline onclick
, , а затем он вызывает флажок для проверки.
Проблема возникает из-за того, что встроенный код проверяет, установлен ли флажок. Поскольку это сначала инициируется, код обнаруживает, что флажок не отмечен и ничего не делает. Теперь, после этого, jQuery затем отправляется и проверяет флажок.
Как мы это исправим? Сначала мы проверяем флажок, а затем вызываем встроенный обработчик. К сожалению, мы не можем использовать jQuery .click()
для вызова обработчика inline, потому что он снова снимет флажок (он также вызовет другие обработчики событий jQuery, если вы добавите их в будущем, вы, вероятно, не хотите, чтобы). Поэтому мы используем собственный DOM-метод, описанный мной ранее, поскольку его единственным эффектом является запуск встроенного кода.
Конечный код:
$("#metadata_field_text_10190_default").attr("checked", true)[0].onclick();
См. демонстрацию: http://jsfiddle.net/GtJjt/3/. (Я включил console.log
в встроенный код для демонстрации, чтобы доказать, что встроенный код запущен. Удалите это, если ваш браузер не Firefox или Chrome или он не сработает).
Обновить снова:
Я не видел твое решение раньше Саймона, спасибо, что напомнил мне о [0].click()
. По сути, это родной эквивалент для jQuery .click()
и работает, потому что он выполняет то, что я описал выше (сначала установите флажок, а затем вызовите встроенный код). Предупреждение: это также вызовет любые обработчики событий, связанные с jQuery, которые могут быть не такими, какие вы хотите.