前端經常要處理一些點擊事件,或者是在用戶保存時,做一些檢查,這時,我們常常會綁定一些事件,如
click,change等。當然這都是我們經常使用的功能。
有些時候,我們的頁面可能還會涉及到一些改變,譬如在點擊某個按鈕時,在頁面中插入一些新的內容,如果此前
我們對這個內容綁定過事件,那么新插入的內容會不會綁定事件呢?很可惜,是沒有,因為我們通常都是在頁面加
載OK之后就綁定事件,而此時,這部分新內容還未插入到頁面。如下:
~~~
<!doctype html>
<html lang="en">
<head>
<!--網站編碼格式,UTF-8 國際編碼,GBK或 gb2312 中文編碼-->
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="Keywords" content="關鍵詞一,關鍵詞二">
<meta name="Description" content="網站描述內容">
<meta name="Author" content="Yvette Lau">
<meta name = "viewport" content = " width = device-width, initial-scale = 1 ">
<title>CSSDemo</title>
<!--css js 文件的引入-->
<!-- <link rel="stylesheet" href="bootstrap-3.3.5-dist/css/bootstrap.min.css"/> -->
</head>
<body>
<div id = "content">
<input type="file" />
</div>
<div>
<input type="button" value="點我">
</div>
</body>
<script type="text/javascript" src="jquery-1.11.2.min.js"></script>
</html>
~~~
當前的頁面中除了一個file控件,還有一個button按鈕。下面是JS的內容,在JS中我們為file控件綁定了change事件,
在點擊button按鈕時,我們會往頁面中插入一個file控件。
~~~
<script type="text/javascript">
$(function(){
$('input[type ="file"]').change(function(){
console.log($(this).val() )
if($(this).val() == ""){
alert("你好")
}
})
$('input[type ="button"]').click(function(){
$("#content").append('<input type="file"/>')
})
})
</script>
~~~
通過測試,可以發現,第一個file在change時,是能夠觸發事件的,而第二插入的file則沒有change事件。對于這個問
題,有如下兩種解決方法:
第一種是將綁定change事件封裝成一個函數,在點擊button按鈕插入file控件之后,調用這個函數。如下:
~~~
<script type="text/javascript">
$(function(){
function fileChange(){
$('input[type ="file"]').change(function(){
console.log($(this).val())
if($(this).val() == ""){
alert("你好")
}
})
}
fileChange();
$('input[type ="button"]').click(function(){
$("#content").append('<input type="file"/>');
fileChange();
})
})
</script>
~~~
另一種方式,是在DOM加載之后和DOM內容發生改變時,綁定file控件的change事件,如下:
~~~
<script type="text/javascript">
window.onload,window.onchange = function(){
$('input[type ="file"]').change(function(){
console.log($(this).val() )
if($(this).val() == ""){
alert("你好")
}
})
}
$('input[type ="button"]').click(function(){
$("#content").append('<input type="file"/>')
})
</script>
~~~
兩種方式均能解決此問題,至于究竟使用何種方式,就看個人的喜好。
- 前言
- jQuery輪播圖插件
- JS模擬事件操作
- JS閉包與變量
- JS綁定事件
- HTML5之file控件
- JavaScript的this詞法
- JavaScript的this詞法(二)
- JS this詞法(三)
- JS檢測瀏覽器插件
- JS拖拽組件開發
- number輸入框
- Modernizr.js和yepnode.js
- DOM變化后事件綁定失效
- div和img之間的縫隙問題
- 詳解JavaScript作用域
- bootstrap入門
- 表單驗證(登錄/注冊)
- Bootstrap網格系統
- Bootstrap排版
- Bootstrap創建表單(一)
- Bootstrap表單(二)
- Bootstrap按鈕
- Bootstrap圖片
- Bootstrap字體圖標(glyphicons)
- Bootstrap的aria-label和aria-labelledby
- Bootstrap下拉菜單
- Bootstrap按鈕組
- Bootstrap按鈕菜單
- Bootstrap輸入框組
- Bootstrap導航元素
- Bootstrap導航欄
- sublimeText頻頻崩潰
- JQuery不同版本的差異(checkbox)
- Bootstrap面包屑導航、分頁、標簽、徽章
- Bootstrap警告
- Bootstrap進度條
- 前端的上傳下載
- JS字符串的相關方法
- CSS3選擇器(全)
- CSS3新增文本屬性詳述
- 利用CSS3實現圖片切換特效
- CSS3新增顏色屬性
- CSS3的border-radius屬性詳解
- JS創建對象幾種不同方法詳解
- JS實現繼承的幾種方式詳述(推薦)
- CSS3響應式布局
- JS模塊化開發(requireJS)
- 利用@font-face實現個性化字體
- 前端在html頁面之間傳遞參數的方法
- CSS自動換行、強制不換行、強制斷行、超出顯示省略號
- 如何在Html中引入外部頁面
- reactJS入門
- React組件生命周期
- 使用React實現類似快遞單號查詢效果
- ReactJS組件生命周期詳述
- React 屬性和狀態詳解