質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

2162閲覧

jQueryを使用せずにテーブルの行全体をリンクにしたい

ap_m

総合スコア0

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/08/30 15:12

編集2021/08/30 15:19

Vue.jsのv-forでテーブルを実装したのですが、テーブルの行全体をリンクにしたいです。
調べ方が悪いのか、そもそも不可能なのか、jQueryを使用する方法しか分かりませんでした。

html

1<div id="sort"> 2 <p>検索: <input type="text" name="query" v-model="word"></p> 3 <table> 4 <thead> 5 <tr> 6 <th v-on:click='sortBy("id")' :class="['sortable',{active: sortKey == 'id' }]" >ID<span :class="sortOrders['id'] > 0 ? 'asc' : 'desc'"></span></th> 7 <th v-on:click='sortBy("name")' :class="['sortable',{active: sortKey == 'name' }]" >商品名<span :class="sortOrders['name'] > 0 ? 'asc' : 'desc'"></span></th> 8 <th v-on:click='sortBy("price")' :class="['sortable',{active: sortKey == 'price' }]" >価格<span :class="sortOrders['price'] > 0 ? 'asc' : 'desc'"></span></th> 9 ~省略~ 10 <tr> 11 </thead> 12 <tbody> 13 <tr v-for="item in filteredData"> 14 <td><a v-bind:href="item.page">{{item.id}}</a></td> 15 <td><a v-bind:href="item.page">{{item.name}}</a></td> 16 <td><a v-bind:href="item.page">{{item.price}}</a></td> 17 ~省略~ 18 </tbody> 19 </table> 20</div>

javascript

1var columnsData = { 2 colmuns: ['id','name','price',・・・], 3 items:[ 4 {page:"test1",id:"1",name:"あいうえお",price:"1000円",・・・}, 5 {page:"test2",id:"2",name:"かきくけこ",price:"100円",・・・}, 6 {page:"test3",id:"3",name:"さしすせそ",price:"500円",・・・}, 7 {page:"test4",id:"4",name:"たちつてと",price:"5000円",・・・}, 8 ~省略~ 9 ], 10 sortOrders : function(){ 11 var sortOrder = {}; 12 columnsData["colmuns"].forEach(function (key) { 13 sortOrder[key] = 1 14 }) 15 return sortOrder; 16 } 17}; 18new Vue({ 19 el: '#sort', 20 data: { 21 colmuns: columnsData.colmuns, 22 items:columnsData.items, 23 sortKey : "", 24 sortOrders : columnsData.sortOrders(), 25 word: "" 26 }, 27 computed: { 28 filteredData: function(){ 29 var data = this.items; 30 var sortKey = this.sortKey; 31 var wordKey = this.word && this.word.toLowerCase(); 32 var order = this.sortOrders[sortKey] || 1; 33 if (wordKey) { 34 data = data.filter(function (row) { 35 return Object.keys(row).some(function (key) { 36 return String(row[key]).toLowerCase().indexOf(wordKey) > -1 37 }) 38 }) 39 } 40 if (sortKey) { 41 data = data.slice().sort(function (a, b) { 42 a = a[sortKey] 43 b = b[sortKey] 44 return (a === b ? 0 : a > b ? 1 : -1) * order 45 }) 46 } 47 return data; 48 } 49 }, 50 methods: { 51 sortBy: function (key) { 52 this.sortKey = key; 53 this.sortOrders[key] = this.sortOrders[key] * -1; 54 } 55 } 56});

実際にはデータ量はもっとありますが現在のコードです。
(参考にしたサイト様があったのですが、色々調べすぎてどこだか分からなくなってしまいました。)
行全体リンクの方法がわからず、全てのセルにv-bind:href="item.page"を付けている状態です。
jQueryのdata-hrefのようなやり方で行リンクはできないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

jQueryは元々JavaScriptで書かれているので、jQueryで出来ることはJavaScriptで出来ます。
data-hrefと言ってもdata属性取得してlocationで遷移させるだけなはずなので、同じようにクリックイベントでJavaScriptでdata属性を取得して利用すればできそうに思います。

投稿2021/08/30 21:16

編集2021/08/30 21:17
m.ts10806

総合スコア80861

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問