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

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

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

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

JavaScript

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

Q&A

解決済

2回答

1328閲覧

jQueryの実装をVue.jsにしたい

fj_hoshi

総合スコア10

Vue.js

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

JavaScript

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

0グッド

0クリップ

投稿2020/03/21 14:02

Vue.jsの初心者です。
選択肢をクリックすると選択した項目が表示される機能をjQueryでは実装しましたが、それをVue.jsで行う必要が出てきて困っています。

現状のものをこちらに再現いたしました。これと全く同じことをVueで行うにはどうしたらいいのでしょうか。
https://codepen.io/hoshishakehell/pen/bGdxbxQ

HTML

1<div class="search_cate"> 2<p class="search_cate_selected"><span>All categories</span></p> 3<ul class="search_cate_items"> 4<li>All categories</li> 5<li>Books</li> 6<li>Computers</li> 7<li>Fashions</li> 8</ul> 9</div>

JavaScript

1searchCate = { 2 $selected_text: $(".search_cate .search_cate_selected span"), 3 $items_text: $(".search_cate .search_cate_items li"), 4 init: function() { 5 var a = this; 6 a.$items_text.on({ 7 click: function() { 8 var b = this.innerHTML; 9 a.$selected_text.html(b) 10 } 11 }); 12 } 13}; 14$(document).ready(function() { 15 searchCate.init() 16});

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

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

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

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

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

guest

回答2

0

ベストアンサー

正解のコードを書くとコーディング依頼みたいになってしまうので方針だけ書いておきます。

  • Vue の理念: できるだけDOM APIを使わないことが推奨されています。今のあなたのコードですと、.innerHTMLとかjQueryの$(...).html().on()も内部的にDOM APIを使用しています。実際、質問内容はDOM APIに全く触れずにVueの機能だけで実装することができます。
  • init(): Vue は明示的にinitializeする必要はなく、new Vue(...) で Vue のインスタンスを作成するだけで動くようになります。
  • リストの表示: 現状ではHTMLに直接リストの内容をハードコードしていますが、Vue の場合はそうすることは推奨されません。リストの内容をdataオプションに指定して、v-forを使って表示しましょう。リストレンダリング が参考になるでしょう。
  • リスト項目のクリック: v-on:clickディレクティブで、クリック時に実行される処理を指定できます。この「指定する処理」の中でv-forのループ変数が使えますので、使うとうまく実装できるでしょう。イベントハンドリングが参考になるでしょう。
  • 選択された項目の表示: dataオプションに、選択された項目を表すプロパティを用意するといいでしょう。

Vueのチュートリアルをいくつかやってみれば上記を参考にするまでもなくすぐに作れるようになると思います。

投稿2020/03/22 10:25

karamarimo

総合スコア2551

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

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

fj_hoshi

2020/03/22 11:05

ご回答ありがとうございます!確かにこの質問の仕方だと、コーディング依頼みたいになってしまいますね。 v-forディレクティブでデータオプション内の配列をリストで表示、v-on:clickでmethods内の処理を呼び出しましたが、クリックした要素の取得あたりからが分からなかったので、教えていただいたv-forのループ変数とイベントハンドリングのところを勉強してもう少し頑張ってみようと思います! 自分のやり方も途中までは間違っていなかったようなので少し自身がつきました。ありがとうございました。
guest

0

そのコードを一度、ピュアJSで書かれてみては?

jQueryだって全てJavaScriptで書かれているので、ピュアJSで再現すれば動くはずです。

投稿2020/03/21 15:10

kyoya0819

総合スコア10429

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問