javascript - Jquery click()事件的禁用
問題描述
$(document).ready(function(){ $('.menua1').click(function(){ //執行了點擊事件的內容 });});function toggleMenu(){ var fs = window.top.document.getElementById('bframeset'); if(條件true){$('.menua1_noclick').attr('class','menua1'); }else{$('.menua1').attr('class','menua1_noclick'); }}
//HTML<a class='menua1'>A按鈕</a>
當我點擊B按鈕調用了toggleMenu(),將該元素的class值改變,我覺得以前ready()里面的click事件應該失效,當我在調用toggleMenu()時把class的值換成初始值,click()應該正常能夠運行;但是不管這個a標簽的class值怎么改變都不會影響到我原來的click,改變了class的值也依然能夠點擊進入執行jqeury代碼,求解。
我的目的是:需要在點擊B按鈕后,將A按鈕原有的點擊事件禁用,當再次點擊B按鈕在開啟A按鈕原有的點擊事件。
在線等待,請高手指教。
問題解答
回答1:當我點擊B按鈕調用了toggleMenu(),將該元素的class值改變,我覺得以前ready()里面的click事件應該失效
首先這句話, 這個理解就是錯誤的.
舉個栗子:
有一個人叫小明, 他爸媽管他叫小明明, 他老婆管他叫大明明, 有一天小明的手破了一個口, 他爸/媽看到了問: 小明明你手怎么弄破了?他老婆說: 大明明做菜的時候不小心切到了又回頭問小明: 老公, 你的手還痛嗎?爸/媽說: 哎, 都這么大的人了 還叫大明明干嘛? 多不好聽老婆說: 好, 以后不叫了
Question: 小明的手壞了沒有?
jQuery的選擇器, 是為了通過不同的手段選擇到元素, 但是你對它造成的shanghai, 不會因為你改變了它的某個屬性而消除.
所以回歸正題, 給元素綁定了點擊事件, 需要清除
1. 如果是js綁定:ele.onclick = function(){...}//要清除的話 , 用空方法覆蓋ele.onclick = function(){}2. jQuery on方法綁定的點擊事件//用off解除綁定$ele.on('click', function(){})$ele.off('click', function(){})3.或者在點擊事件的回調中判斷狀態(全局變量/flag)var flag = true;$ele.on('click', function(){ if(flag){ ... }});function toggle(){ flag = !flag;}回答2:
樓上舉得列子也是有點意思,簡單來講,事件的綁定僅僅和元素的本身有關,跟他以后叫什么名字沒太大關系。就好像說你的身份證代表了你這個人,然后有一天你換了名字,身份證是否就變成了代表別人?就是這個道理
回答3:$('.menua1').off(’click’),把按鈕取消綁定click事件不就行了么
相關文章:
1. javascript - 請問 chrome 為什么會重復加載圖片資源?2. (python)關于如何做到按win+R再輸入文件文件名就可以運行?3. mysql - 分庫分表、分區、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處4. python - 能通過CAN控制一部普通的家用轎車嗎?5. javascript - react input file6. javascript - 請教如何獲取百度貼吧新增的兩個加密參數7. css3 - 微信前端頁面遇到的transition過渡動畫的bug8. Python爬蟲如何爬取span和span中間的內容并分別存入字典里?9. html5 - 只用CSS如何實現input框的寬度隨框里輸入的內容長短自動適應?10. javascript - 關于css絕對定位在ios瀏覽器被橡皮筋遮擋的問題
