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

Vue中如何點(diǎn)擊獲取當(dāng)前元素下標(biāo)

 更新時(shí)間:2023年05月18日 10:26:50   作者:PromiseKeeping  
這篇文章主要介紹了Vue中如何點(diǎn)擊獲取當(dāng)前元素下標(biāo)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue點(diǎn)擊獲取當(dāng)前元素下標(biāo)

項(xiàng)目開(kāi)發(fā)中,固定列表是很常見(jiàn)的,有時(shí)候我們需要得到元素的下標(biāo)去做一些事情,但是少了v-for想要獲取下標(biāo)就比較困難了

下面我便介紹我的方法

其實(shí)我用的方法很簡(jiǎn)單,就是用事件委托機(jī)制去獲取事件發(fā)生的元素,再獲取父元素的子元素集合,再遍歷子元素集合,當(dāng)事件發(fā)生元素等于子元素集合中的某一個(gè)時(shí),返回?cái)?shù)組下標(biāo),即可得到事件發(fā)生元素的下標(biāo)。

<template>
? <div class="footer-tab">
? ? <div class="tab-item">home</div>
? ? <div class="tab-item">second</div>
? ? <div class="tab-item">third</div>
? </div>
</template>
<script>
? ? export default {
? ? ? ? name: 'commonFooter',
? ? ? ? data() {
? ? ? ? ? ? return {}
? ? ? ? },
? ? ? ? created() {
? ? ? ? },
? ? ? ? mounted(){
? ? ? ? ? let _this=this;
? ? ? ? ? //事件委托
? ? ? ? ? document.querySelector(".footer-tab").addEventListener("click",function(e){
? ? ? ? ? ? let target=e.target;//事件發(fā)生的元素
? ? ? ? ? ? let nodeList=e.target.parentNode.children;//同級(jí)元素集合
? ? ? ? ? ? let targetIndex=_this.tabIndex(target,nodeList);//調(diào)用tabIndex方法,返回值便是元素下標(biāo)
? ? ? ? ? ? console.log(targetIndex)//打印當(dāng)前點(diǎn)擊元素的下標(biāo)
? ? ? ? ? })
? ? ? ? },
? ? ? ? methods: {
? ? ? ? ? /**
? ? ? ? ? ?*
? ? ? ? ? ?* @param target 事件觸發(fā)的元素
? ? ? ? ? ?* @param nodeList 元素集合
? ? ? ? ? ?* @returns {number} 返回事件觸發(fā)元素的下標(biāo)
? ? ? ? ? ?*/
? ? ? ? ? tabIndex(target,nodeList){
? ? ? ? ? ? for(let i=0;i<nodeList.length;i++){
? ? ? ? ? ? ? if(target===nodeList[i]){
? ? ? ? ? ? ? ? return i;
? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? }
? ? ? ? }
? ? }
</script>
<style scoped>
</style>

vue數(shù)組獲取下標(biāo)的坑

使用Vue 編寫了基礎(chǔ)的添加刪除功能遇到了一個(gè)小坑

<div id="app">
			<fieldset>
				<legend>
					Create New Person
				</legend>
				<div>
					<label>姓名:</label>
					<input v-model="new_person.name">
				</div>
				<div>
					<label>年齡:</label>
					<input v-model="new_person.age">
				</div>
				<div>
					<label>性別:</label>
					<select v-model="new_person.sex">
						<option value="男">男</option>
						<option value="女">女</option>
					</select>
				</div>
				<div id="">
					<input type="button" name="" id="" value="創(chuàng)建" v-on:click="Create_person" />
				</div>
			</fieldset>
			<table>
				<thead>
					<tr>
						<th>姓名</th>
						<th>年齡</th>
						<th>性別</th>
						<th>刪除</th>
					</tr>
				</thead>
				<tbody>
					<tr v-for="person in people">
						<td>{{ person.name }}</td>
						<td>{{ person.age }}</td>
						<td>{{ person.sex }}</td>
						<td><button @click="Delete_person(index)">刪除</button></td>
					</tr>
				</tbody>
			</table>
		</div>
	</body>

Vue代碼

<script>
		var vm = new Vue({
			el: "#app",
			data: {
				new_person: {
					name: '',
					age: 0,
					sex: '男',
				},
				people: [{
						name: '1',
						age: 0,
						sex: '',
					},
					{
							name: '2',
							age: 0,
							sex: '',
						},
						{
								name: '3',
								age: 0,
								sex: '',
							}
				],
			},
			methods: {
				Create_person: function() {
					this.people.push(this.new_person)
					this.new_person = {
						name: '',
						age: 0,
						sex: '男',
					}
				},
				Delete_person: function(index) {
					this.people.splice(index, 1);
					console.log(index)
				}
			}
		})
	</script>

刪除功能遇到點(diǎn)小坑,每次點(diǎn)擊刪除都會(huì)刪除第一條內(nèi)容

后來(lái)發(fā)現(xiàn)在下面代碼處index并未獲取還并未報(bào)錯(cuò)

<td><button @click="Delete_person(index)">刪除</button></td>
// Vue 代碼
	Delete_person: function(index) {
					this.people.splice(index, 1); //splice 命令如果傳入下標(biāo)將默認(rèn)刪除第一條
					console.log(index)
				}
			}

由此從以下代碼中查找到獲取下標(biāo)的方法

<li v-for="(item,index)  in tabList" v-on:click="addClass(index,$event)" >{{item.title}}</li>
data里面聲明:
data() {
    return {
      tabList: [
        { id: 0, title: "首頁(yè)1" },
        { id: 1, title: "首頁(yè)2" },
        { id: 2, title: "首頁(yè)3" }
      ],
      current:0
    };
  },
  methods: {
    addClass: function(index,event) {
      this.current = index;
      //獲取點(diǎn)擊對(duì)象      
      var el = event.currentTarget;
      console.log("當(dāng)前對(duì)象的內(nèi)容:"+el.innerHTML);
      console.log(this.current)

然后修改代碼

<tbody>
					<tr v-for="(person,index) in people">
						<td>{{ person.name }}</td>
						<td>{{ person.age }}</td>
						<td>{{ person.sex }}</td>
						<td><button @click="Delete_person(index)">刪除</button></td>
					</tr>
				</tbody>

總結(jié)

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

相關(guān)文章

  • Vue3?Webview轉(zhuǎn)Android虛擬導(dǎo)航欄遮擋問(wèn)題解決實(shí)錄

    Vue3?Webview轉(zhuǎn)Android虛擬導(dǎo)航欄遮擋問(wèn)題解決實(shí)錄

    這篇文章主要介紹了Vue3?Webview轉(zhuǎn)Android虛擬導(dǎo)航欄遮擋問(wèn)題解決的相關(guān)資料,文中通過(guò)JavaScript動(dòng)態(tài)估算安全區(qū)域高度,并通過(guò)CSS變量傳遞給樣式層,最終解決了這個(gè)問(wèn)題,需要的朋友可以參考下
    2026-03-03
  • vue2.x中的provide和inject用法小結(jié)

    vue2.x中的provide和inject用法小結(jié)

    這篇文章主要介紹了vue2.x中的provide和inject用法小結(jié),本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-12-12
  • 解決vue項(xiàng)目中前后端交互的跨域問(wèn)題、nginx代理配置方式

    解決vue項(xiàng)目中前后端交互的跨域問(wèn)題、nginx代理配置方式

    這篇文章主要介紹了解決vue項(xiàng)目中前后端交互的跨域問(wèn)題、nginx代理配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue form表單post請(qǐng)求結(jié)合Servlet實(shí)現(xiàn)文件上傳功能

    vue form表單post請(qǐng)求結(jié)合Servlet實(shí)現(xiàn)文件上傳功能

    這篇文章主要介紹了vue form表單post請(qǐng)求結(jié)合Servlet實(shí)現(xiàn)文件上傳功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • Vue中的局部組件介紹

    Vue中的局部組件介紹

    這篇文章主要介紹了Vue中的局部組件,文章圍繞Vue局部組件得相關(guān)資料展開(kāi)內(nèi)容,需要的的小孩伙伴請(qǐng)參考下面文章的具體介紹,希望對(duì)你有所幫助
    2021-12-12
  • webpack的安裝全過(guò)程

    webpack的安裝全過(guò)程

    這篇文章主要介紹了webpack的安裝全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • Vue使用vxe-table實(shí)現(xiàn)數(shù)據(jù)分組的三種方式

    Vue使用vxe-table實(shí)現(xiàn)數(shù)據(jù)分組的三種方式

    本文詳細(xì)介紹了vxe-table在分分展示分組數(shù)據(jù)時(shí)的三種模式:default、column和combined,這些模式可根據(jù)不同業(yè)務(wù)場(chǎng)景靈活切換,滿足不同展示需求,需要的朋友可以參考下
    2026-06-06
  • vue使用路由守衛(wèi)實(shí)現(xiàn)菜單的權(quán)限設(shè)置

    vue使用路由守衛(wèi)實(shí)現(xiàn)菜單的權(quán)限設(shè)置

    我們使?vue-element-admin前端框架開(kāi)發(fā)后臺(tái)管理系統(tǒng)時(shí),?般都會(huì)涉及到菜單的權(quán)限控制問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于vue使用路由守衛(wèi)實(shí)現(xiàn)菜單的權(quán)限設(shè)置的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • vue父子組件的互相傳值和調(diào)用

    vue父子組件的互相傳值和調(diào)用

    這篇文章主要介紹了vue父子組件的互相傳值和調(diào)用,幫助大家更好的理解和學(xué)習(xí)使用vue框架,感興趣的朋友可以了解下
    2021-04-04
  • 通過(guò)cordova將vue項(xiàng)目打包為webapp的方法

    通過(guò)cordova將vue項(xiàng)目打包為webapp的方法

    這篇文章主要介紹了通過(guò)cordova將vue項(xiàng)目打包為webapp的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02

最新評(píng)論

松江区| 葵青区| 鄂托克前旗| 翁源县| 屯门区| 巴中市| 饶平县| 横峰县| 洪洞县| 洞口县| 哈尔滨市| 和平区| 银川市| 股票| 临邑县| 珲春市| 安阳市| 广宗县| 池州市| 嘉黎县| 绍兴县| 莱阳市| 淅川县| 炎陵县| 韩城市| 高要市| 湄潭县| 丹凤县| 安泽县| 固安县| 黎城县| 长治市| 陇西县| 科尔| 井研县| 桃园县| 固阳县| 伊吾县| 广元市| 东海县| 张掖市|