2015-09-29 33 views
-2

我試圖創建一個按鈕,onclick在頁面上添加了一些新的html元素,但jQuery沒有附加到新對象。jQuery僅附加到現有對象

<script> 
jQuery(document).ready(function(){ 
    jQuery("input[type='button']").click(function(){ 
     var ask=confirm('Are you sure'); 
     if(ask){ 
      var n=jQuery(this).parent(); 
      var s=jQuery(this).prop('id'); 
      n.html('Select Picture: <br><input type="file" name="'+s+'" id="'+s+'" required>'); 
      } 
     } 
    }); 
    jQuery(":file").change(function() { 
     var na=jQuery(this).val(); 
     alert(na); 
    }); 
}); 
</script> 

現在這裏是該代碼form例如:

<form> 
      <div><img src="image/source"><br> 
      <input type="checkbox" required value="1" name="product1">image is ok<br> 
      <input type="button" value="change image" id="product1" name="product1b"></div> 
<input type="file" name="product2"> 
</form> 

所以,當我在buttonform更改,請單擊此:

<form> 
<div> 
Select Picture: <br> 
<input type="file" name="product1" id="product1" required> 
</div> 
<input type="file" name="product2"> 
</form> 

的問題是,jQuery函數jQuery(":file").change(function() {適用於product2,但不適用於product1,因爲它不在第l頁上oad和jQuery未附加到它。

+0

** **點擊事件可能是你可以在控制檯 –

+0

@HimeshAadeshara你看是對的,那是因爲我複製了我原始代碼中的代碼並刪除了一些不相關的代碼,所以它犯了這個錯誤。我會編輯它 – NimaNr

回答

3

你必須使用你的時,元素是動態委託的事件:我認爲你已經錯過了正常的閉合支架

jQuery(document).on('change', ':file', function(){ 
    // do stuff 
}); 
+2

這。如果創建DOM時不存在元素,則不會附加任何事件。授權是要走的路 - 這可以讓您將事件附加到父母身上,預期您的元素正在創建。 – Lewis