1. 程式人生 > >Jquery點選事件只觸發一次的解決方法

Jquery點選事件只觸發一次的解決方法

方案一:

<script>
$(function () { 
$("#all").click(function(){    
    if(this.checked){    
        $("#list :checkbox").attr("checked", true);   
    }else{    
        $("#list :checkbox").attr("checked", false); 
    }    
});
});
</script>

方案二:

<script>
$(function () { 
$("#all"
).click(function(){ if(this.checked){ $("#list :checkbox").prop("checked", true); }else{ $("#list :checkbox").prop("checked", false); } }); });
</script>

今天在設定checkbox全選功能時,使用方案一在測試時發現全選功能在頁面不重新整理的情況下只能執行一次, 檢視官方文件, 才知道從 jQuery 1.6 開始新增了一個方法 prop(),但是一直都沒有使用過。

從中文意思看,兩者分別是獲取/設定 attributes 和 properties 的方法,那麼為什麼還要增加 prop() 方法呢?

Before jQuery 1.6, the .attr() method sometimes took property values
into account when retrieving some attributes, which could cause
inconsistent behavior.

因為在 jQuery 1.6 之前,使用 attr() 有時候會出現不一致的行為。

那麼,什麼時候使用attr(),什麼時候使用prop()?

To retrieve and change DOM properties such as the checked, selected,
or disabled state of form elements, use the .prop() method.

根據官方的建議:具有 true 和 false 兩個屬性的屬性,如 checked, selected 或者 disabled 使用prop(),其他的使用 attr()

到此,將 attr(‘checked’) 改成 prop(‘checked’) 即可修復提的 issues 了。

轉載請註明出處。歡迎關注本公眾號,檢視更多幹貨!
這裡寫圖片描述

相關推薦

Jquery事件觸發解決方法

方案一: <script> $(function () { $("#all").click(function(){ if(this.checked){ $("#list :checkbox").attr

Input type="file"上傳檔案change事件觸發解決方案

一、剛開始用法 $(function () { $("#file").change(excelUpload); }) excelUpload()函式內部就是提示是否確認上傳動作,一開始這樣寫只有在第一次選擇上傳檔案的時候觸發了excelUpload函式,顯然這樣是不行的。後來網上有人說快

ASP.NET GridView 後臺繫結行觸發SelectedIndexChanged,頁面重新整理後,只有頁的情況下,事件觸發

如題,小弟剛接觸asp.net不久,所以有很多不懂,望高手們不吝賜教。 下面進入正題,後臺程式碼如下 <pre name="code" class="csharp"> protected void GridView1_RowDataBound(object se

jquery hover事件觸發動畫

1、你可以使用jq的stop方法: $(div).stop(false, true).animate({'margin-top':'100px'},1000); 如果stop()的第一個引數為true,表示立即清除當前的動畫佇列,預設為fx;如果第二個引數為true,表示立即將當前正在執行的動畫置為它

解決input file檔案chang事件觸發問題

$("#file1").live('change',function(){imageFormSubmit("1");}); 注意  file檔案上傳,必須設定file檔案的name 屬性

js事件繫結,但是卻執行了多

造成這樣的原因是因為繫結事件會累加,在寫js實現分頁拿資料時,由於是通過class為元素繫結事件,每當那一頁新的資料的時候,就會為該class繫結事件,即造成了事件的累加,解決辦法,通過bind(‘click’funtion(){})來繫結事件,並且在繫結之前現將click事

input file change事件觸發

onchange後,生成一個新input type file代替舊的。 $('#inputFileID').replaceWith('<input name="fileToUpload" t

實現多觸發事件

$('.sumbit1').click(function () { $('.sumbit1').unbind();//在點選事件裡移除觸發事件 var pad = $('input:radio[name=info]:checked').val(); i

iOS解決按鈕短時間內多觸發事件方法(開始寫部落格)

在上家公司做專案的時候,做了個60秒獲取驗證碼的功能,當時做了個定時器,按鈕觸發定時器,邏輯來講都是沒問題的,但是實際操作的時候,惡意的在短時間內多次點選那個獲取驗證碼按鈕,按鈕的點選事件被呼叫了多次,定時器從而也呼叫多次,本來一秒減一的事件變成了一秒減多,並且減到0

JQuery實現滑鼠滑動多觸發響應事件

正常在設定滑鼠滾輪事件的時候,一次滾動對應一次響應事件。但是按照使用者習慣,使用者一次滑動滑鼠滾輪的動作中,可能實際上滑鼠滾輪滾動了多次(通俗的講,就是使用者不會一下一下的滑動滾輪)。這樣實際上觸發了多次滾輪響應事件,無法達到理想中,使用者滑動一次滾輪,只產生一個動作的效果,

iOS解決按鈕短時間內多觸發事件方法

end bind nbsp per dos cancel span 內多 perf - (void)unisversalButtonAcrion:(UIButton *)sender { [[self class] cancelPreviousPerformReq

jquery中一個事件累計觸發問題詳解。

最近維護老的公司專案,jquery中事件累計觸發的bug是一個老生長談的問題,因此想要弄清楚就必須先弄清楚addEventListener和onclick系列方法的區別 W3C上原文如下 addEventListener is the way to register

Javascript和jquery事件--事件觸發超連結

前面的不過是一些基礎的知識,真正的一些事件還是有點不同。還有一些名稱空間的問題。不過現在ie也開始接受W3C標準,而且平時開發也很少考慮ie了,一些事件就不考慮ie了。 點選事件--click   大部分問題出現在js、jq觸發超連結上面。我之前看到的解釋是谷歌新版本阻止了觸發瀏覽器預設的操作(超連結、右

click事件的累加繫結,繫結事件,執行多

第一種方法是使用jquery的one()方法,為元素繫結一個一次性的事件處理函式,這個事件處理函式只會被執行一次。 $("#adsCollection_tb").one("click",function(){ alert("執行"); }) 第二種

百度地圖tilesloaded觸發

func view target int .com loaded dde rem http 方法轉自百度地圖論壇@ hx863975383:http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=82409

在小程式中巢狀h5頁面,事件觸發

最近在寫小程式,由於小程式快滿了,就把頁面寫成h5,嵌在小程式裡,原以為很簡單,沒想到遇到問題,問題不多,但是很大 第一個就是點選事件不觸發, 場景如下:     點選按鈕觸發ajax請求,請求成功之後跳轉到另一個頁面,但是頁面始終不跳轉。 解決方法,將http開

QT中ReadyRead()訊號觸發問題解決

1、傳送端Write一次,那麼接收方就會有新資料到達,ReadyRead()訊號就會觸發一次,這種說法是錯誤的。 2、傳送方和接收方沒有一 一對應關係,傳送端Write()函式呼叫一次,假如這一次Write了較大資料(2M),那麼接收方ReadyRead()訊號往往會觸發兩

a標籤的href和onclick屬性同時存在事件觸發

onclick的事件被先執行,其次是href中定義的(頁面跳轉或者javascript)同時存在兩個定義的時候(onclick與href都定義了),如果想阻止href的動作,在onclick必須加上return false; 一般是這樣寫onclick="xxx();retu

jquery校驗 remote快取 remote驗證 解決辦法

    jquery校驗,為了實現非同步使用者名稱是否存在功能,往往要用 jquery remote方法,然而,用remote方法,往往會有快取,只請求一次,即使內容改變,錯誤結果還是一樣。 折騰了兩天,什麼修改jquery原始檔,或者加程式碼清空第一次產生的快取,各種辦法

ECharts 非圖表區域的事件觸發問題

1. 通過 myChart.getZr().on('click', fn) 監聽整個圖表的點選事件,註冊回撥 myChart.getZr().on('click', () => { //拿到index即可取出被點選資料的所有資訊 console.log(clickIndex) })