jquery動態添加刪除div--事件綁定,對象克隆


我想做一個可以動態添加刪除div的功能。中間遇到一個問題,最后在manong123.com開發文摘 版主的熱心幫助下解答了(答案在最后)     

   使用到的jquery方法和思想就是:事件的綁定和銷毀(unbind),另外還可以使用clone,通過克隆可以很好的解決這個問題          相關描述如下

功能:點擊增加,自動添加一個iptdiv 點擊 iptdiv后的 X 自動刪除當前div

問題:默認存在的(也就是頁面加載進來的)的那個iptdiv 后的 X 點擊有效,可以刪除當前 iptdiv  但是 jquery 動態添加進的 iptdiv 則點擊沒有效果。請各位大俠給看看,提供些意見。我要的就是動態添加和刪除div 問題代碼如下: 

<script type="text/javascript" src="jquery.js"></script>
<body>
<form action="" method="post" enctype="multipart/form-data">
<label>請選擇上傳的圖片</label>
<a href="javascript:addimg()" >增加圖片</a>
<div id="mdiv">
<div >
<input type="file" name="img[]" /><a href="#" name="rmlink">X</a>
</div>
</div>
<input type="submit" name="submit" value="上傳圖片" />
</form>
<script type="text/javascript" >
$(document).ready(function(){
$("a[name=rmlink]").click(function(){
$(this).parent().remove();
})
})
function addimg(){
$("#mdiv").append('<div ><input type="file" name="img[]" /><a href="#" name="rmlink">X</a></div>');
}
</script>
 

jquery方法的綁定偵聽和銷毀來解決動態div的增加刪除:

正確代碼:
<script type="text/javascript" >
$(document).ready(function(){
 bindListener();
})

function addimg(){
 $("#mdiv").append('<div ><input type="file" name="img[]" /><a href="#" name="rmlink">X</a></div>');

 // 為新元素節點添加事件偵聽器
  bindListener();
}

// 用來綁定事件(使用unbind避免重復綁定)
function bindListener(){
 $("a[name=rmlink]").unbind().click(function(){
  $(this).parent().remove();
    })
}
</script>

這中間就是存在一個事件綁定的過程,如果沒有的話通過js加進來的div內不事件並不會被執行,添加了偵聽事件功能后才能正確運行
 

jquery的clone方法來解決動態div的增加刪除:

這里還有更好的寫法,我做了些許的修改,也許弄巧成拙了。 

<body>
<div style="display:none;">
<!--clone div start-->
    <div >
        <input type="file" name="img[]" /><a href="#" name="rmlink">X</a>
    </div>
</div>
<!--clone div end-->
<form action="dowater.php" method="post" enctype="multipart/form-data">
<label>請選擇上傳的圖片</label>
<a href="#" id="addimg" >增加圖片</a>
<div id="mdiv">
    <div >
    <input type="file" name="img[]" /><a href="#" name="rmlink">X</a>
    </div>
</div>
<input type="submit" name="submit" value="上傳圖片"  />
</form>
<script type="text/javascript" >
var temp; 
$(document).ready(function(){        
 temp = $(".iptdiv:first");
 $("a[name=rmlink]").click(function(){
  $(this).parent().remove();
    })
 $("#addimg").click(function(){
  temp.clone(true).appendTo($("#mdiv"));
 })
})
</script>
</body>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM