Vue+jquery實(shí)現(xiàn)表格指定列的文字收縮的示例代碼
本文介紹了Vue+jquery實(shí)現(xiàn)表格指定列的文字收縮的示例代碼,分享給大家,具體如下:

效果很簡(jiǎn)單,但是寫起來真的不容易,因?yàn)閂ue對(duì)于沒有React這種前端框架經(jīng)驗(yàn)的人是不友好的
(少吐槽,多工作,省下時(shí)間出去hi)
先說一下我走過的彎路:我之間想通過 v-if 指令去操作這一列
代碼是這樣的:
<el-table-column width="250" align="center" label="比較基準(zhǔn)">
<template scope="scope">
<span v-if="isAllTxt">{{getShortStr(scope.row.benchmark)}}</span>
<span v-else>{{scope.row.benchmark}}</span>
<i @click="changeTxt" style="margin-left:8px;color: #20a0ff;" class="el-icon-more"></i>
</template>
</el-table-column>
changeTxt 方法去改變 isAllTxt這個(gè)boolean 從而達(dá)到控制長(zhǎng)短文字的顯示
額,然后每次點(diǎn)擊任意一行,這一列所有的文字都改變了。呃呃呃,這樣產(chǎn)品絕對(duì)不會(huì)答應(yīng)的,你以為是上課全體起立么???
好,我們用原來jquery時(shí)代開發(fā)的經(jīng)驗(yàn),在點(diǎn)擊事件中傳入 $(this) ,手動(dòng)改dom
(前提是項(xiàng)目配置了jquery,請(qǐng)轉(zhuǎn)頭看:http://m.fzitv.net/article/115161.htm,上去,自己動(dòng)。哦不,自己動(dòng)手把它配好)
changeTxt($(this))
changeTxt(ref) {
ref.text(XXX);
}
結(jié)果當(dāng)然是錯(cuò)誤:

那底下就有同學(xué)說是不是jquery導(dǎo)錯(cuò)了???
當(dāng)然也不是,這里的 this 并不是 dom 的 this,是vue的vm對(duì)象,不信的可以在方法中用jquery的 $ 試一下,并不是jquery的鍋。
那又有愛思考的小伙伴說我用直接用 this 可以么 ?
changeTxt(this)

得到的并不是當(dāng)前元素的對(duì)象,這條路又不通。
那vue中是怎么得到元素的對(duì)象的呢???
給元素定義 ref
<span ref="txt">{{getShortStr(scope.row.benchmark)}}</span>
方法中通過 this.$refs['txt'].text(XXX) 改變dom,嗯?

引用返回的是什么 ??? 沒法操作啊 ,而且返回的這個(gè)標(biāo)簽是表格最后一行的數(shù)據(jù),哇,亂七八糟,爆炸。
無奈,只能通過最笨的方法,給我們的 span 定義 id ,而且是不同的 id ,用 jquery 獲取 id 對(duì)應(yīng)的元素
<el-table-column width="250" align="center" label="比較基準(zhǔn)">
<template scope="scope">
<span :id="scope.row.id">{{getShortStr(scope.row.benchmark)}}</span>
<i v-if="scope.row.benchmark.length>20" @click="changeTxt(scope.row.benchmark,scope.row.id)" style="margin-left:8px;color: #20a0ff;" class="el-icon-more">
</i>
</template>
</el-table-column>
// changeTxt方法:
changeTxt(txt,id) {
this.isAllTxt = !this.isAllTxt;
if(this.isAllTxt){
$('#'+id).text(txt);
}else{
$('#'+id).text(this.getShortStr(txt));
}
}
// getShortStr 方法
getShortStr(txt_origin) {
if(txt_origin.length > 20){
return txt_origin.substring(0,20);
}else{
return txt_origin;
}
}
搞定是搞定了,但是 jquery 和 vue 的風(fēng)格是不一樣的,混用體驗(yàn)并不是很好,有好的方法請(qǐng)一定留言告訴我,必定送上一句 謝謝 ?。。?/p>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue + Element-ui的下拉框el-select獲取額外參數(shù)詳解
這篇文章主要介紹了Vue + Element-ui的下拉框el-select獲取額外參數(shù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08
vue項(xiàng)目在安卓低版本機(jī)顯示空白的原因分析(兩種)
本文給大家?guī)韛ue項(xiàng)目在安卓低版本機(jī)顯示空白的原因分析,根據(jù)各自需求給大家?guī)砹藘煞N原因分析,大家可以參考下2018-09-09
vue項(xiàng)目中更改名字和圖標(biāo)的簡(jiǎn)單實(shí)現(xiàn)步驟
今天在寫vue項(xiàng)目時(shí)碰到的問題是怎么修改vue的網(wǎng)頁圖標(biāo),所以下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目中更改名字和圖標(biāo)的簡(jiǎn)單實(shí)現(xiàn),文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
Vue watch響應(yīng)數(shù)據(jù)實(shí)現(xiàn)方法解析
這篇文章主要介紹了Vue watch響應(yīng)數(shù)據(jù)實(shí)現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
vue百度地圖通過地址名稱獲取地址的經(jīng)緯度gps問題(具體步驟)
在Vue項(xiàng)目中,可以通過使用百度地圖JavaScript?API來實(shí)現(xiàn)根據(jù)地址名稱獲取經(jīng)緯度GPS的功能,本文分步驟給大家詳細(xì)講解vue百度地圖獲取經(jīng)緯度的實(shí)例,感興趣的朋友一起看看吧2023-05-05
vue.config.js中配置configureWebpack和chainWebpack以及一些常用的配置
configureWebpack和chainWebpack都是Vue CLI中用于修改Webpack配置的工具,configureWebpack可以通過對(duì)象或函數(shù)修改配置,簡(jiǎn)單直接;chainWebpack則使用WebpackChainAPI,適合復(fù)雜配置,兩者可以結(jié)合使用,以達(dá)到更精細(xì)的配置需求,幫助開發(fā)者優(yōu)化項(xiàng)目構(gòu)建2024-10-10
vue?elementUI之this.$confirm的使用方式
這篇文章主要介紹了vue?elementUI之this.$confirm的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
vue src動(dòng)態(tài)加載請(qǐng)求獲取圖片的方法
這篇文章主要為大家詳細(xì)介紹了vue src動(dòng)態(tài)加載請(qǐng)求獲取圖片的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10

