javascript - 關于JS 事件委托操作ul li標簽的問題
問題描述
先說一下我想要實現的功能,就是在一個ul 里面 點擊某個li標簽 就移除當前點擊的li。
但是搞來搞去就是沒能實現我想要的效果。
現在的問題如下
怎么用更直接的方法取得當前點擊的li下標,for循環取下標是百度淘來的。
移除是可以用了,但是它不是按我點擊的li移除 比如我點擊2 它會刪除3 or 4 不知道是不是if(e.target == children[i])這里判斷不對
點擊一次沒效果,要點第二次才執行removeChild。
HTML結構
<ul id='box'> <li data='2017'>0</li> <li>1</li> <li>2</li> <li>3</li> <li>4</li></ul>
JS代碼
document.getElementById('box').addEventListener('click',function(e) { if(e.target && e.target.nodeName == 'LI') {var children = this.children; //獲取ul里面的所有li元素集合for(var i=0;i<children.length;i++){ if(e.target == children[i]) { //對比目標元素和li集合元素//alert('目標元素的下標為:' + i); //輸出目標元素的下標 document.getElementById(e.target.parentNode.id).removeChild(document.getElementById(e.target.parentNode.id).childNodes[i]);return; }} }});
問題解答
回答1:document.querySelector(’#box’).addEventListener(’click’,function(e){ if(e.target.nodeName=='LI'){e.target.parentNode.removeChild(e.target); }});回答2:
<!DOCTYPE HTML><html><ul id='box'> <li data='2017' onclick='removeli(this);'>0</li> <li onclick='removeli(this);'>1</li> <li onclick='removeli(this);'>2</li> <li onclick='removeli(this);'>3</li> <li onclick='removeli(this);'>4</li></ul><script>function removeli(node){node.parentNode.removeChild(node);}</script></html>
相關文章:
1. linux - 【已解決】fabric部署的Python項目Apache啟動之后提示403Forbidden該如何解決?2. python - (初學者)代碼運行不起來,求指導,謝謝!3. mysql里的大表用mycat做水平拆分,是不是要先手動分好,再配置mycat4. window下mysql中文亂碼怎么解決??5. python - flask sqlalchemy signals 無法觸發6. nginx - pip install python庫報錯7. python - 獲取到的數據生成新的mysql表8. python的文件讀寫問題?9. javascript - js 對中文進行MD5加密和python結果不一樣。10. 為什么python中實例檢查推薦使用isinstance而不是type?
