2011-05-06 66 views
4

我在我的jQuery的事情上有問題。我只是不知道我的代碼有什麼問題,但我認爲我需要向你們尋求幫助。對我的代碼發生的更好的解釋會有很大的幫助。我對jQuery的東西是全新的,所以請和我一起裸照。Jquery警報不顯示預期的代碼

當追加被調用時,它顯示了我期望看到的元素,但在我的警報中,我只能看到1個單詞'first'。

這是我的代碼。 http://jsfiddle.net/MCvLQ/

回答

5

好的,讓我一行一行地解釋一下。 首先,

var $val = $(myElement).not('#spn2') 

此說,你是選擇不包括具有SPN2的id的元素myElement的所有元素。

$val now is equivalent to 
-------------------------- 
<span id="spn1">first </span> 
<span id="spn3">third </span> 
<span id="spn4">fourth </span> 

您注意到上面的元素,id爲'spn2'的元素不再存在。基本上。不()選擇器定義爲從匹配元素集合中刪除元素。

那麼接下來的這個說法

$('#myDiv').append(); 

增加$ val的所有元素到myDiv的端部。

我在myDiv中添加了一個預定義的元素,所以您會注意到所有元素都添加在div的最後部分。 我還爲您創建了一個按鈕,看到.append()這是.prepend()的反面。這也會將這些元素添加到myDiv中現有元素的頂部。

見我修改後的代碼在這裏看到的差別http://jsfiddle.net/MCvLQ/1/

最後

alert($val.html()); 

的.html()被定義爲,以獲得的第一個元素的HTML內容設定的匹配元素。 這裏指的 http://api.jquery.com/html/

通知,$ val的最新價值,因爲你可以看到第一個元素是「第一」,這樣解釋了爲什麼你的警報只顯示文字「第一」。 .html()方法使用瀏覽器的innerHTML屬性。


附加信息:

除了。不是()選擇你也可以使用:不()選擇。這裏指的http://api.jquery.com/not-selector/

對於速度的問題,本次測試http://jsperf.com/jquery-css3-not-vs-not:不()的方式遠優於。不是()大多數除了IE8的瀏覽器。

但是,仍然取決於你。無論哪一個對你來說都更具可讀性。編碼方式.not()乍一看代碼更容易閱讀。

+0

我看到:)非常感謝。難怪我只得到'第一'的結果。現在,我很清楚。謝謝你,先生! – 2011-05-06 11:13:31