jquery not不起作用的解決方法:先開啟不起作用的程式碼檔案;然後修改jquery程式碼為「$(document).not('#date').click(function(){. ..}」即可。
本教學操作環境:Dell G3電腦、Windows7系統、HTML5&&CSS3&&jquery2.0.0版本。
推薦: 《css影片教學》《javascript基礎教學》
#jquery中not方法失效的解決方案
篩選元素時,想從$(document)中直接去掉某一元素,使用$(document).not('#a')是無效的。
但要解決這類問題可以使用其它的方法,舉個例子
在模擬下拉列表時,想要實現的效果是點擊div,隱藏的列表出現,點擊任意的地方下拉列表消失
<div id="date">选择日期</div> <div id="content" style="display:none;"> <ul> <li>2月1日</li> </ul> </div>
這個時候直接寫
$("#date").click(function(){ $("#content").slideDown(); }); $(document).click(function(){ $("#content").slideUp(); });
會出現點擊div時下拉清單先出現後消失的情況
解決這種問題大部分人最先想到的是
#在設定document的點擊事件是去掉元素#date,即
$(document).not(‘#date’).click(function(){ $("#content").slideUp(); });
但not()在這裡並不生效
這時就需要換一種思路
#在點擊date的一瞬間content的高度變為1px,display變成block
所以
$(document).not(‘#date’).click(function(){ if($("#content").css('display') == 'block' && $("#content").css('height') != '1px'){ $("#content").slideUp(); } });
就可以達到去掉元素#date的效果
另不想使用slideDown()的話
就必須透過增加一個變數記錄下拉清單的開閉狀態來達到相同的效果
總之其他的情況也可以透過類似的方式來解決題設的問題
更多程式相關知識,請造訪:程式設計教學!!
以上是jquery not不起作用怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!