最近始用javascript和jquery寫網頁,因為都是邊寫邊學,所以常遇到哭笑不得的問題,困住自己很久的時間。
首先是val()和value的問題
[code language=”html”]
<div class="input-group"><input class="form-control" id="dotWords" type="text" value=""></div>
[/code]
[code language=”javascript”]
selectedPage.find(‘#dotWords’).attr(‘value’,”);
selectedPage.find(‘#dotWords’).val("");
[/code]
本來是用第一行的方法,想要清除輸入框的字。查網路上的法泰半都是這個解法。但弄了半天,一直沒有辦法成功。後來用了第二個方法才成功。以下是原因:
http://myweb.jowai.info/javascript-dom-differences-and-relations-between-attributes-and-property/
http://stackoverflow.com/questions/5874652/prop-vs-attr
http://stackoverflow.com/questions/8312820/jquery-val-vs-attrvalue
https://teamtreehouse.com/community/why-use-val-instead-of-attrvalue
attr和prop相比之下,似乎prop比較好用。
再者是selector的問題,想說javascript有hoist的特性,所以我就把變數宣告都放在function前面,甚至直接初始化了。結果後面function裡要select的時候,竟select不到。
[code language=”javascript”]
var newPage=$(‘#’+newId);
.
.
.
selectedPage=newPage;
selectedPage.find(‘.panel-heading’).addClass(‘panel-collapsed’);
selectedPage.find(‘.panel-body’).slideDown();
[/code]
後來發現原因是,當我宣告並初始newPage的時候,#newPage都還沒創造出來(這裡我是用clone()),所以之後當然選不到東西!
parent() 和 parents() 差個s……
補個closest()
https://api.jquery.com/parent/
https://api.jquery.com/parents/
https://api.jquery.com/closest/
find()和children()
https://api.jquery.com/children/
http://stackoverflow.com/questions/648004/what-is-fastest-children-or-find-in-jquery
關於我:
我是沒一村,專長和興趣是程式、主動投資、科技商業模式。可以參考我的書單和比較熱門的文章: