IE没有拿我的onClick,有什么建议吗?

时间:2013-04-05 19:39:21

标签: javascript jquery internet-explorer

我有一个非常简单的功能,似乎在Chrome,Firefox和Safari中运行良好,但在IE中它正在破碎。我实际上是想把它作为Windows 8 Web App加载,但是从我读过的内容来看,它使用了更宽容的IE10版本来输出。

假设我有一个<div>(或<a> href ...我也尝试了这样做了),就像这样:

<div onClick="showSection('myTemplate.html');"></div>

这是我的功能:

function showSection(loca) {
    $("#optionView").show();
    $("#bookMenu").hide();
    $("#optionView").load('settings/'+loca);    
    $("#settingsButton").attr("onClick","showSettingsMain();");
}

为什么这不会在IE中专门工作?

2 个答案:

答案 0 :(得分:4)

更好的选择,特别是因为你使用的是jQuery,不使用内联事件处理程序。

相反,请使用此HTML:

<div id="main_div"></div>

并使用此Javascript:

$(document).ready(function () {
    $("#main_div").on("click", function () {
        showSection("myTemplate.html");
    });
});

这可能无法解决IE10的问题,但它被认为是更好的做法......并且应该与所有浏览器保持一致。

其他一些建议:

您可以再次使用.attr,而不是使用onclick来设置#settingsButton的{​​{1}}属性:

on

虽然我不确定这会对问题产生什么影响。

尽管如此,这是对$("#settingsButton").on("click", function () { showSettingsMain(); }); attr - .prop() vs .attr()

之间区别的解释

此外,如果您需要准确指定要使用的网址,即使基于每{ - 1}},您也可以使用prop属性。说这是你的HTML:

<div>

然后你可以使用:

data-*

点击第一个div将使用“myTemplate.html”,而点击第二个div将使用“myTemplate2.html”。

这样,您的数据就会嵌入到您的HTML中,但您的Javascript却不引人注目。

答案 1 :(得分:0)

你正在使用jQuery错误,在这里:

首先,将事件绑定到div,您需要为其添加一个类或ID:

<div id="myEvent"></div>

然后,绑定事件:

$('#myEvent').on('click', showSection( 'myTemplate.html') );

你的功能:

function showSection(loca) {
    $("#optionView").show();
    $("#bookMenu").hide();
    $("#optionView").load('settings/'+loca);    
}

试试这种方式。