Лучший вариант, особенно если вы используете jQuery, - это не использовать встроенные обработчики событий.
Вместо этого, используйте этот HTML-код:
<div id="main_div"></div>
И использовать этот Javascript:
$(document).ready(function() {
$("#main_div").on("click", function() {
showSection("myTemplate.html");
});
});
Это не может решить вашу проблему с IE10, но это считается лучшей практикой ... и должны работать последовательно со всеми браузерами.
Несколько других предложений:
Вместо использования .attr
установить атрибут #settingsButton
onclick
, вы можете также использовать on
снова:
$("#settingsButton").on("click", function() {
showSettingsMain();
});
Хотя я не совсем уверен, что если бы имеют какое-то влияние на то, что проблема.
Тем не менее, вот объяснение разницы между attr
и prop
- .prop() vs .attr()
Кроме того, если вам необходимо точно указать, что URL для использования, даже на ослабленный <div>
основы, вы можете использовать атрибут data-*
. Скажем, это ваш HTML:
<div class="trigger-div" data-target-url="myTemplate.html"></div>
<div class="trigger-div" data-target-url="myTemplate2.html"></div>
Тогда вы могли бы использовать:
$(document).ready(function() {
$(".trigger-div").on("click", function() {
var $this = $(this);
var target_url = $this.attr("data-target-url"); // or $this.data("target-url")
showSection(target_url);
});
});
Щелчок первый DIV будет использовать "myTemplate.html", при нажатии второй будет использовать "myTemplate2.html".
Таким образом, ваши данные встроены в ваш HTML, но ваш Javascript ненавязчив.
Я думал, что имя атрибута onclick должно быть полностью строчным. – lib3d
@ lib3d Нет, это то, когда устанавливаю его в Javascript. В HTML это не имеет значения. Хотя в некоторых спецификациях HTML он применяется (или нет) – Ian
@ TheJason - о каком 'onClick' вы говорите? Когда вы нажимаете на свой div, вы уверены, что 'showSection()' выполняется или не выполняется? Или вы ссылаетесь на свою '.attr (« onClick »' part? – Ian