2014-03-12 27 views
0

我的index.html既包括的jquery.js和我自己的腳本是這樣的:在單獨的.js jQuery的奇怪行爲文件

<script type="text/javascript" src="../lib/jQuery/jquery-2.1.0.min.js"></script> 
<script type="text/javascript" src="myscript.js"></script> 

myscript.js看起來是這樣的:

function eval() { 
    document.getElementById("rContent").innerHTML = "<ul id=\"agentList\">"; 
    var agentNames = $(".tttAgentName"); 
    var falloutOrders = $(".tttFalloutOrder"); 

    var i, j = 0; 
    for(i = 0, j = 0; i < agentNames.length, j < falloutOrders.length; i++, j++) { 
     document.getElementById("agentList").innerHTML += "<li>" + agentNames[i].value + ": "; 
     document.getElementById("agentList").innerHTML += falloutOrders[j].value + "</li><br/>"; 
    } 

    document.getElementById("rContent").innerHTML += "</ul>"; 
} 

什麼我不明白這是這樣的: 雖然兩個jQuery選擇器$(「.tttAgentName」)和$(「.tttFalloutOrder」)一直在工作,但我不得不用標準JavaScript來完成其餘的工作。舉例來說,如果我改變

document.getElementById("agentList").innerHTML 

$("#agentList").html 

腳本停止工作。

使用普通的JavaScript選擇器,腳本工作得很好。

我確定這是一件相當微不足道的事,但我在這裏錯過了什麼?

在此先感謝您的幫助!

+1

您需要等待jQuery加載。所以在你的myscript.js文件中,把所有這些放在$(document).ready(function(){...})中; –

+0

如果這確實是myscript.js的內容,那麼您將現有的'window.eval'函數更改爲您自己的...您可能需要重新考慮的內容。 –

+0

@Josh非常感謝您解決腳本執行不當的問題 - 將所有內容放入$(document).ready()中,然後執行。 – slagjoeyoco

回答

3

jQuery's .html是一個功能...不是一個屬性:

$("#agentList").html() 

調用它,而不PARAMS返回當前值。用params調用它會替換當前的html。

+0

'.html'是一種方法,它是一個屬性,但設置屬性將簡單地替換方法評估者而不是設置innerHTML。 – andlrc

+0

是的我的意思是jQuery函數html()。 - 實際上用$ .append()替換它,因爲我想在同一個容器中保留任何html內容,所以我會添加新的html。感謝提示! – slagjoeyoco

+0

@NULL是的,這是真的。然而,關鍵是調用不帶括號的$(「#agentList」).html只是返回函數定義...而不是所選元素的html。 –