精慕HU
2019-02-25 16:59:05
自學新人,遇到個問題不知道該搜索什么關鍵詞,所以來叨擾大家一下。這是HTML部分:<li class="article-item featured"> <header>Article #2</header> //code</li><li class="article-item"> <header>Article #3</header> //code</li>這是JS部分:var article2, article3;article2=$('.featured');article2.toggleClass('featured');article3=article2.next();article3.toggleClass('featured');article2的位置是.featured 。article3是article2的同級下一個標簽。但是article3是在article2刪除了.featured之后賦值的。為什么還能準確的找到原.featured的位置?這背后是什么運行機制?謝謝
3 回答

慕的地8271018
TA貢獻1796條經驗 獲得超4個贊
article2=$('.featured');
article2 獲取到這個節點的引用后,可以執行dom 操作了,
article2.toggleClass('featured');
這里刪除了featured
類,我想最大的影響是 下次article5 = $(".featured")
就不能獲取到這個節點了,已經賦值了的article2
并沒有改變,除非重新賦值 article2 = $(".featured")
就拿不到了。

慕萊塢森
TA貢獻1810條經驗 獲得超4個贊
article2=$('.featured');
這個代碼把 article2 指向了 <li class="article-item featured">...
article2.toggleClass('featured');
這個代碼 把 <li class="article-item featured"> 變成了 <li class="article-item"> 也僅僅只是去掉了一個 class 而已,操作的是 article2 指向的對象,并沒有操作 article2 的指針;除非,你在后面再重新執行一遍這個代碼,這個時候才找不到了
article2=$('.featured');
因為這個時候改動的是指針,
ps:當把一個對象賦值給一個變量時,其實是把這個變量指向這個對象;如果你修改變量的屬性,其實是修改這個對象,指針沒有變;當你重新賦值時,就是把他的指針重新指向右邊的表達式;
添加回答
舉報
0/150
提交
取消