Позвоните непосредственно в DOM onclick
( см. Демо ):
$("#test_default")[0].onclick();
Или вообще без jQuery
document.getElementById("test_default").onclick();
Обновление:
Фактическая проблема связана с взаимодействием между .click()
jQuery и встроенным кодом onclick
. .click()
в jQuery на самом деле делает две вещи: он первый запускает любые обработчики событий, , включая встроенный onclick
код, , а затем вызывает флажок для проверки .
Проблема возникает из-за того, что встроенный код проверяет, установлен ли флажок. Поскольку это срабатывает первым, код обнаруживает, что флажок не отмечен , и ничего не делает. Теперь, после того, как это закончено, jQuery тогда идет и проверяет флажок.
Как мы можем это исправить? Сначала мы проверяем флажок вручную, затем вызываем встроенный обработчик. К сожалению, мы не можем использовать jQuery .click()
для вызова встроенного обработчика, потому что он снова снимает флажок (он также будет вызывать другие обработчики событий, связанные с 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, что может быть не тем, что вы хотите.