2013-04-05 19 views
1

我有一個非常簡單的功能,似乎在Chrome,Firefox和Safari中正常工作,但在IE瀏覽器中已經崩潰。實際上,我試圖將其作爲Windows 8 Web App加載,但從我讀過的內容來看,它使用IE10的更寬容版本進行輸出。IE沒有采取我的onClick,有什麼建議嗎?

說我有一個<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中專門工作嗎?

+0

我認爲onclick屬性名稱必須是完全小寫的。 – lib3d 2013-04-05 19:46:40

+1

@ lib3d不,那是在Javascript中設置它的時候。在HTML中,這並不重要。雖然在某些HTML規範中,它被強制(或不) – Ian 2013-04-05 19:47:18

+0

@TheJason - 你在談論哪個'onClick'?當你點擊div時,你確定showSection()是否正在執行?或者你指的是你的'.attr(「onClick」部分? – Ian 2013-04-05 19:54:08

回答

4

更好的選擇,特別是因爲您使用jQuery,不使用內聯事件處理程序。

相反,使用HTML:

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

並使用此Javascript:

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

這可能不是解決IE10您的問題,但它被認爲是更好的做法......並應工作始終與所有瀏覽器。

其他一些建議:

而不是使用.attr設置的​​的onclick屬性的,你不妨再使用on

$("#settingsButton").on("click", function() { 
    showSettingsMain(); 
}); 

雖然我不能完全確定是否會對問題有什麼影響。

儘管如此,這裏的attrprop之間的差異的解釋 - .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並不顯眼。

+3

這顯然是更好的練習,但它會很有趣要知道爲什麼OP的代碼不能在IE10上工作 – 2013-04-05 19:43:17

+1

這絕對是正確的答案,他將如何處理改變他想要運行的功能點擊tho? – tymeJV 2013-04-05 19:43:34

+0

@dystroy絕對,我希望我可以重現/建議一些東西。再次,希望這「更好的做法」將解決這個問題,反正 – Ian 2013-04-05 19:43:54

0

您使用jQuery的錯誤,在這裏:

首先,結合事件的DIV,你需要添加一個class和id爲:

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

然後,綁定事件:

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

而且你的函數:

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

試試這種方式。

相關問題