最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue項(xiàng)目input標(biāo)簽checkbox,change和click綁定事件的區(qū)別說明

 更新時間:2022年08月05日 15:06:01   作者:可缺不可濫  
這篇文章主要介紹了vue項(xiàng)目input標(biāo)簽checkbox,change和click綁定事件的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

input標(biāo)簽checkbox,change和click綁定事件的區(qū)別

我們經(jīng)常在vue開發(fā)項(xiàng)目的過程中,遇到需要對input框使用v-modal的這種情況,在有的時候,不光需要雙向數(shù)據(jù)綁定,還需要在改變數(shù)據(jù)之后綁定其它的操作,那么問題來了,你是使用@change綁定事件還是使用@click綁定事件

建議不要通過click綁定事件,對待input標(biāo)簽,最好通過change來觸發(fā),本人血的教訓(xùn)。

<input @change="inputchecked" class="goods-checked"?
v-model="shopcargoods[index].checked" type="checkbox" >

click執(zhí)行的時間要早于change執(zhí)行的時間,因?yàn)関-modal的時間是一個異步的。

當(dāng)點(diǎn)擊之后,v-modal可能還沒有來得及將綁定在data里面的數(shù)據(jù)改變,click綁定的事件就執(zhí)行了,這會導(dǎo)致click綁定事件里面拿到的data數(shù)據(jù)不是最新的。

change綁定的事件是一定要等到input框的value值改變之后才會被觸發(fā)。

關(guān)于這一系列的順序我是這樣理解

點(diǎn)擊input框–> click事件生效 --> v-modal改變綁定的data數(shù)據(jù) --> 渲染到頁面上改變input的value值 --> change事件生效

input標(biāo)簽中checkbox類型的相關(guān)操作總結(jié)

今天突然用到了input標(biāo)簽里的checkbox,發(fā)現(xiàn)還是有些概念不清不楚的,在這里總結(jié)一下。

一、checked屬性

常用于input標(biāo)簽里type類型為checkboxradio ,是一個Boolean屬性。規(guī)定在頁面加載時預(yù)先被選定??梢酝ㄟ^js代碼進(jìn)行設(shè)置。

	<input type="checkbox" name="hu" checked="checked">
	<input type="checkbox" name="hu" checked=true>
	<input type="checkbox" name="hu" checked=false>
	<input type="checkbox" name="hu" checked="">
	<input type="checkbox" name="hu" checked>

以上的幾種寫法,都會得到相同的結(jié)果,就是標(biāo)簽被選中。  

這是因?yàn)樵趶?fù)選框里只要有checked屬性,不管是夠?yàn)槠滟x值,結(jié)果為空或true或false或任意值,均為選中狀態(tài)。

需要注意的是,在XHTML中禁止屬性最小化,所以必須定義為

<input type="checkbox"  checked="checked">

二、操作

可以利用JS或Jquery操作checked的值:

var js_box1 = document.getElementById("box1").checked = true;
$("#box2").prop('checked',true);           // 標(biāo)準(zhǔn)寫法 推薦
$("#box2").prop({checked: true});          // map鍵值對
$("#box2").prop('checked',function(){      // 通用寫法
    return true;
}); 
$("#cb1").prop("checked","checked");        //不標(biāo)準(zhǔn)
 
$("#box2").attr('checked',true);           // 不推薦
$("#box2").attr('checked','true');         // 不推薦
$("#box2").attr('checked','checked');      // 通用寫法
 
console.log('1:'+ box1.checked); // 1:undefind

在我使用的過程來看,強(qiáng)烈推薦使用.prop()方法進(jìn)行設(shè)置或判斷是否選中的操作。(當(dāng)然這是jQuery里的方法)

因?yàn)樵谖议_始想到的是用attr()方法,然后踩坑里了.......用attr()設(shè)置復(fù)選框選中沒有問題,問題出現(xiàn)在判斷是否選中復(fù)選框。不管我選中還是沒有選中,返回的都是“undefind”。之后還用prop()就美滋滋。

console.log('1:'+ box1.checked);  //1:true
console.log('2:'+ $("#box2").attr('checked'));  //2:checked
 
$(document).on('click', '#box3', function(){
    console.log('3:'+ $("#box3").attr('checked'));  //3:undefined
});
 
$(document).on('click', '#box4', function(){
    console.log('4:'+ $("#box4").prop('checked'));  //4:checked
});

后來自己又研究了一下,發(fā)現(xiàn)如果不需要實(shí)時的監(jiān)聽是否選中復(fù)選框的話,attr()和prop()都能得到結(jié)果,且attr返回:"checked"或"undefined",prop 返回true/false。因?yàn)樵谖宜褂玫捻?xiàng)目中,需要用戶點(diǎn)擊復(fù)選框選中以后,標(biāo)簽欄就需要立刻做出反應(yīng),將對應(yīng)的內(nèi)容生成新標(biāo)簽回顯給用戶。這時候使用attr('checked')在點(diǎn)擊事件下獲得checked屬性,就會一直返回undefind。具體原因在后面會有解釋,換成prop方法就不會出現(xiàn)這個問題。

還有一種方式也可以,就是   .is(':checked')  // 返回true/false

補(bǔ)充一下,關(guān)于prop和attr方法的區(qū)別:

1.設(shè)置的屬性值類型不同

由于attr()函數(shù)操作的是文檔節(jié)點(diǎn)的屬性,因此設(shè)置的屬性值只能是字符串類型如果不是字符串類型,也會調(diào)用其toString()方法,將其轉(zhuǎn)為字符串類型。

prop()函數(shù)操作的是JS對象的屬性,因此設(shè)置的屬性值可以為包括數(shù)組和對象在內(nèi)的任意類型。

2.jQuery認(rèn)為:attribute的checked、selected、disabled就是表示該屬性初始狀態(tài)的值,property的checked、selected、disabled才表示該屬性實(shí)時狀態(tài)的值(值為true或false)。

 即:

  • attr() 獲取的是初始狀態(tài)的值,即使取消了選中,也不會改變。
  • prop() 獲取的值已經(jīng)發(fā)生變化,是實(shí)時狀態(tài)的值。(這就是我上面出問題的原因啦)

三、關(guān)于checkbox的其他操作

1、設(shè)置第一個checkbox 為選中值

$("#chk1").find('input:checkbox:first').prop("checked",true);
$("#chk1").find('input:checkbox').eq(0).prop("checked",true);

2、設(shè)置最后一個checkbox為選中值

$("#chk1").find('input:checkbox:last').prop("checked",true);

3、根據(jù)索引值設(shè)置任意一個checkbox為選中值

$("#chk1").find('input:checkbox').eq(索引值).prop('checked', true); ?//索引值=0,1,2....?
//或者
$("#chk1").find('input:checkbox').slice(0,2).prop('checked', true); //同時選中第0個和第1個checkbox
//從索引0開始(包含),到索引2(不包含)的checkbox

4、根據(jù)value值設(shè)置checkbox為選中值

$("#chk1").find("input:checkbox[value='1']").prop('checked',true);
$("#chk1").find("input[type='checkbox'][value='1']").prop('checked',true);

5、刪除checkbox:①刪除value=1的checkbox ②刪除第幾個checkbox

$("#chk1").find("input:checkbox[value='1']").remove(); //將匹配元素從DOM中刪除,將標(biāo)簽從頁面上刪除了
$("#chk1").find("input:checkbox").eq(index).remove(); //索引值 index=0,1,2....
?
//如刪除第3個checkbox:
?
$("#chk1").find("input:checkbox").eq(2).remove();

6、選中所有奇數(shù)項(xiàng)或偶數(shù)項(xiàng)

$("#chk1").find("input[type='checkbox']:even").prop("checked",true); //選中所有偶數(shù)?
$("#chk1").find("input[type='checkbox']:odd").prop("checked",true); //選中所有奇數(shù)?

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • 使用vue.js?為基礎(chǔ)的仿QQ聊天室

    使用vue.js?為基礎(chǔ)的仿QQ聊天室

    這篇文章主要為大家介紹了基于vue.js的QQ聊天室,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • vue實(shí)現(xiàn)兄弟組件之間跳轉(zhuǎn)指定tab標(biāo)簽頁

    vue實(shí)現(xiàn)兄弟組件之間跳轉(zhuǎn)指定tab標(biāo)簽頁

    這篇文章主要介紹了vue實(shí)現(xiàn)兄弟組件之間跳轉(zhuǎn)指定tab標(biāo)簽頁,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Vue3中操作ref的四種使用方式示例代碼(建議收藏)

    Vue3中操作ref的四種使用方式示例代碼(建議收藏)

    這篇文章主要介紹了Vue3中操作ref的四種使用方式示例代碼(建議收藏),本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • Vue3.0實(shí)現(xiàn)無限級菜單

    Vue3.0實(shí)現(xiàn)無限級菜單

    這篇文章主要為大家詳細(xì)介紹了基于Vue3.0實(shí)現(xiàn)無限級菜單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • vue級聯(lián)選擇器的getCheckedNodes使用方式

    vue級聯(lián)選擇器的getCheckedNodes使用方式

    這篇文章主要介紹了vue級聯(lián)選擇器的getCheckedNodes使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 關(guān)于vue中ref的使用(this.$refs獲取為undefined)

    關(guān)于vue中ref的使用(this.$refs獲取為undefined)

    這篇文章主要介紹了關(guān)于vue中ref的使用(this.$refs獲取為undefined),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 圖解Vue?響應(yīng)式流程及原理

    圖解Vue?響應(yīng)式流程及原理

    這篇文章主要為大家介紹了圖解Vue的響應(yīng)式原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 詳解vue幾種主動刷新的方法總結(jié)

    詳解vue幾種主動刷新的方法總結(jié)

    這篇文章主要介紹了詳解vue幾種主動刷新的方法總結(jié),文中詳細(xì)的介紹了幾種方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • 使用異步組件優(yōu)化Vue應(yīng)用程序的性能

    使用異步組件優(yōu)化Vue應(yīng)用程序的性能

    這篇文章主要介紹了使用異步組件優(yōu)化Vue應(yīng)用程序的性能,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04
  • 源碼分析Vue.js的監(jiān)聽實(shí)現(xiàn)教程

    源碼分析Vue.js的監(jiān)聽實(shí)現(xiàn)教程

    這篇文章主要通過源碼分析介紹了Vue.js的監(jiān)聽實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-04-04

最新評論

张家口市| 丹巴县| 淳安县| 德令哈市| 怀远县| 会同县| 万州区| 荔浦县| 达州市| 固阳县| 罗江县| 华宁县| 唐山市| 文山县| 辽中县| 台江县| 嵩明县| 丹江口市| 星子县| 台东县| 绥滨县| 桐庐县| 榆树市| 龙陵县| 偃师市| 定安县| 大关县| 瑞丽市| 雅江县| 启东市| 固原市| 合水县| 正定县| 堆龙德庆县| 盈江县| 桑植县| 长寿区| 阿鲁科尔沁旗| 临清市| 南投县| 札达县|