2011-05-06 63 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