Ответ 1
Он указывает доступность (и другое) программного обеспечения, какова цель div
. Подробнее здесь в черновик role
спецификация атрибута.
Да, это просто семантический. Отправка события click
на кнопку должна работать.
Более ранняя версия этого ответа (еще в 2011 году) сказала:
... но функция jQuery
click
не делает этого; он запускает только обработчики событий, которые были подключены к элементу с помощью jQuery, а не обработчиками, подключенными другими способами.
... и предоставил пример кода и вывод ниже.
Я не могу реплицировать результат сейчас (два года спустя). Даже если я вернусь к более ранним версиям jQuery, все они запускают обработчики jQuery, обработчики DOM0 и обработчики DOM2. Заказ не обязательно совпадает с реальным кликом и функцией jQuery click
. Я пробовал версии jQuery 1.4, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.5, 1.5.1, 1.5.2, 1.6 и более поздние версии, такие как 1.7.1, 1.8.3, 1.9.1 и 1.11.3 (текущая версия 1.x на момент написания этой статьи). Я могу только сделать вывод, что это браузер, и я не знаю, какой браузер я использовал. (Сейчас я использую Chrome 26 и Firefox 20 для тестирования.)
Здесь тест, который показывает, что действительно, обработчики jQuery, обработчики DOM0 и обработчики DOM2 - все (начиная с этой записи!), вызванные jQuery click
:
jQuery(function($) {
var div;
$("<p>").text("jQuery v" + $.fn.jquery).appendTo(document.body);
// Hook up a handler *not* using jQuery, in both the DOM0 and DOM2 ways
div = document.getElementById("theDiv");
div.onclick = dom0Handler;
if (div.addEventListener) {
div.addEventListener('click', dom2Handler, false);
} else if (div.attachEvent) {
div.attachEvent('onclick', dom2Handler);
}
// Hook up a handler using jQuery
$("#theDiv").click(jqueryHandler);
// Trigger the click when our button is clicked
$("#theButton").click(function() {
display("Triggering <code>click</code>:");
$("#theDiv").click();
});
function dom0Handler() {
display("DOM0 handler triggered");
}
function dom2Handler() {
display("DOM2 handler triggered");
}
function jqueryHandler() {
display("jQuery handler triggered");
}
function display(msg) {
$("<p>").html(msg).appendTo(document.body);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<div id="theDiv">Try clicking this div directly, and using the button to send a click via jQuery <code>click</code> function.</div>
<input type='button' id='theButton' value='Click Me'>