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

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

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

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

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Q&A

解決済

1回答

3278閲覧

Bootstrap table内のチェックボックスにjQueryを適用できない

hoboki

総合スコア52

Vue.js

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

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

0グッド

0クリップ

投稿2022/01/01 13:43

編集2022/01/01 15:56

LaravelとVue.jsを用いて以下のようにBootstrap tableにcheckboxを作り、jQueryでチェックされた時のイベント検知を行おうとしておりますが上手くいきません。チェックボックスが変化したらConsoleにchangedと表示したいです。

index.blade.php

php

1@extends('layouts.app') 2 3@section('content') 4<div id="x_lists_index"> 5 <x-lists-index inline-template> 6 <form action="{{ route('xLists.multiDelete') }}" method="post"> 7 @csrf 8 <bootstrap-table-component ref="table" :props-data="{{$xLists}}" 9 :props-columns="columns"></bootstrap-table-component> 10 <button type="submit">削除</button> 11 </form> 12 </x-lists-index> 13</div> 14@endsection 15 16@section('js') 17<script> 18 new Vue({ 19 el: "#x_lists_index", 20 }); 21 $(function () { 22 $("input[name='ids[]']").change(function() { 23 console.log('changed'); 24 }); 25 }); 26</script> 27@endsection

index.js

js

1Vue.component('x-lists-index', { 2 data() { 3 return { 4 columns: [{ 5 field: "id", 6 title: " ", 7 sortable: true, 8 formatter: function (value, row, index) { 9 return '<input type="checkbox" id="check_' + index + '" \ 10 name="ids[]" value="' + value + '" style="transform: scale(2);">'; 11 } 12 }, 13 { 14 field: "model_number", 15 title: "型番", 16 sortable: true, 17 filterControl: "input", 18 },] 19 }; 20 }, 21});

BootstrapTableComponent.vue

js

1<template> 2 <div> 3 <bootstrap-table 4 ref="table" 5 :data="data" 6 :options="options" 7 :columns="columns" 8 /> 9 </div> 10</template> 11 12<script> 13import BootstrapTable from "bootstrap-table/dist/bootstrap-table-vue.min.js"; 14export default { 15 props: { 16 propsData: Array, 17 propsColumns: Array, 18 }, 19 components: { 20 "bootstrap-table": BootstrapTable 21 }, 22 data() { 23 return { 24 data: [], 25 options: { 26 search: true, 27 detailView: true, 28 detailFormatter: null, 29 pagination: true, 30 showColumns: true, 31 filterControl: true, 32 toolbar: "#toolbar", 33 clickToSelect: true, 34 idField: "id", 35 selectItemName: "id", 36 resizable: true, 37 locale: "ja-JP" 38 }, 39 columns: [] 40 }; 41 }, 42 created() { 43 this.columns = this.propsColumns; 44 this.data = this.propsData; 45 }, 46}; 47</script>

試したこと

jQueryのchangeメソッドをclickやon('change', ...)にしてもダメでした。
また、bladeファイルではなくindex.js内のcreatedフックに同様のjQuery関数を移動してもダメでした。

できていること

チェックされた行を複数削除する機能は問題なく動作しています。
Bootstrap tableに関係ないjQuery関数は問題なく動作しています(buttonのdisabledの切り替えなど)。
Bootstrap tableに関係ないcheckboxに対しても問題なく動作しています
<input type="checkbox" id="check_out_of_table">に対する$("input[id='check_out_of_table']").change(function...))。

バージョン

Laravel7.3 jQuery3.2 Vue2.5.17

望まない解決策

index.js内のformatter関数を以下のように変更すると成功しました。しかしできるだけこのようなコードは避けたいです。

js

1formatter: function (value, row, index) { 2    return '<input type="checkbox" id="check_' + index + '" name="ids[]" value="' + value + '" style="transform: scale(2);"> \ 3        <script>$("#check_' + index + '").change(function() {console.log("chenged");});</script>';

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

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

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

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

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

guest

回答1

0

ベストアンサー

$("input[name='ids[]']").change(function() {だと、その時点に存在要素にイベントを監視するという意味です。動的に作られたinput[name='ids[]']は監視されません。
なのでbodyを監視し、その内input[name='ids[]']要素のchangeイベントを監視する様に設定する必要があります。

Javascript

1$(body).on('change',"input[name='ids[]']",(function() { 2 console.log('changed'); 3});

投稿2022/01/02 04:24

skys215

総合スコア910

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

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

hoboki

2022/01/02 13:10

なるほど、親要素を指定すればよかったのですね。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問