2010-02-18 14 views
0

所以,在我的下面的示例中,「InputDate」是一個輸入類型=文本,「DateColumn」是具有「DateColumn」類的表內的TD。有人可以解釋這在jQuery/Javascript中看似不一致嗎? (尾隨方括號在讀取時不一致)

閱讀謹慎texbox的價值:

$('#theTable .DateColumn').each(function() { 
    var rowDate = Date.parse($(this)[0].innerHTML); 
}); 

這不:

var inputVal = $('#InputDate').val(); 

表....

此作品中讀一個div的價值:

$('#theTable .DateColumn').each(function() { 
    var rowDate = Date.parse($(this)[0].innerHTML()); 
}); 

該d ifference是innerHTML之後的「()」。這種行爲似乎在從文本框中讀取值的方式和從div中讀取它的方式之間在語法上不一致。我有時候可以,根據控件的類型,必須閱讀.val和.innerHTML vs.whateverElseDependingOnTheTypeOfControl ...但這個例子讓我相信我現在還必須記住我是否需要在每個屬性上使用尾括號/方法。

所以對於像我這樣的人來說,對於jQuery/Javascript來說是比較新的......我似乎已經想出了這個特殊的異常,在這種情況下,但是有一個我錯過了的約定,人們必須從字面上記住每種方法是否需要括號?

回答

2

innerHTML是JavaScript和是一個元素的屬性。如果你想堅持與做事的jQuery的版本,使用html()

$('#theTable .DateColumn').each(function() { 
    var rowDate = Date.parse($(this).html()); 
}); 

編輯:多一點澄清您的問題。 jQuery在語法上相當一致。基本上,您發現的大多數方法都允許通過調整傳遞給方法的參數來進行讀/寫訪問。

var css = $('#element').css('color'); // read the color of the element 
$('#element').css('color', 'red'); // set the color to "red" 

var contents = $('#element').html(); // grab the innerHTML of the element 
$('#element').html('Hello World'); // set the innerHTML of this element 
+0

好了,所以我只想澄清,在我的例子,我已經渡過進入本地JavaScript庫??? (其方法/屬性也通過jQuery API公開)......所以我必須記住的是要調用哪些jQuery方法/屬性,以及哪些對應的本機javascript忽略。這基本上是正確的想法嗎? – tbone 2010-02-18 04:03:28

+0

是的,雖然在某些情況下不會使用原始javascript來優化性能優惠。 jQuery位於JavaScript的頂部,所以你永遠不會「離開」JavaScript。就像任何語言一樣,只需多用一點,你就會發現知道哪個是相當快的。 – Owen 2010-02-18 04:18:56

+0

但是,在這種情況下,我「離開」了jQuery?我只是想找到一些一致性......我來自VB世界,因此傳統上我們不會像原則問題那樣擔心這些大小寫敏感或忍者問題。所以對於像我們這樣的人來說,記住這些令人印象深刻的邊緣案例是一件新鮮事。但是,我們將被拖到那裏踢和尖叫! :) – tbone 2010-02-18 05:28:46

1

.innerHTML是元素的屬性而非方法。

屬性參考實施例:object.MyProperty

方法示例:object.SomeFunction();

+0

同意......但是......在一個人必須記住的實現中存在不一致性我猜是我的問題? 例如,在jQuery中,如果作爲屬性實現,val()可以使用相同的語法來編寫和讀取。但是要寫入val(),必須說:$('#ResolvedDate')。val(resolvedInputVal);這很好,我想,但它一貫實現,或與其他屬性我有時不得不說$('#ResolvedDate')。val = resolvedInputVal; 如果**是**不一致的話,那麼它不會在文檔中出現,因爲作者不知道他做錯了什麼。但是它的Resig – tbone 2010-02-18 04:10:33

+0

......他明顯知道他在做什麼,所以可以肯定地說這是我的誤解......但是我的問題是什麼? – tbone 2010-02-18 04:11:36

+0

爲什麼不花一些時間查看jQuery API文檔? – Pointy 2010-02-18 04:44:47

相關問題