鍍金池/ 問答/HTML/ 簡單獲取數(shù)組中指定元素的索引,和它前面后面所有元素的索引

簡單獲取數(shù)組中指定元素的索引,和它前面后面所有元素的索引

數(shù)據(jù):
data:{
    arr:[{name:"apple",price:10},{name:"banana",price:9},{name:"pare",price:9}]
}

通過簡單渲染 :
<ul v-for="item in data.arr">
  <li>{{item.name}}</li>
</ul>

大概意思就這樣...
給每個li添加了點擊事件,通過點擊某個li,讓它自己和它前面li 都設(shè)置成灰色的背景色,它后面的就背景色不變,jquery 的話可以用prevAlL()獲取當(dāng)前的元素的前面所有元素,在vue中,要怎么操比較好,能獲取到當(dāng)前元素的前面所有元素和它后面的元素?

回答
編輯回答
有你在
<!DOCTYPE html>
<html lang="en">
    <head>
        <title></title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <style>
            .grey{
                background: gray;
            }
        </style>
    </head>
    <body>
        <div id="app">
            <ul v-for="(item,index) in arr">
                <li @click="f($event)">{{item.name}}</li>
            </ul>
        </div>
        <script src="https://cdn.bootcss.com/vue/2.5.9/vue.min.js"></script>
        <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
        <script>
            var temp;
            var app =  new Vue({
                el: '#app',
                data: {
                    arr: [
                        {name:"apple",price:10, grey:false},
                        {name:"banana",price:9, grey:false},
                        {name:"pare",price:9, grey:false}]
                },
                methods: {
                    f(e) {
                        var current = $(e.target).parent().prevAll();
                        console.log(current);
                    }
                }
            });
        </script>
    </body>
</html>

通過click事件傳入對象$(e.target)能得到li的jquery對象,你循環(huán)是加在ul上所以渲染出來是三個<ul><li></li><ul>

2017年7月24日 18:20