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

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

新規登録して質問してみよう
ただいま回答率
85.48%
onclick

onclickとはユーザーのクリック処理を指します。これは"onmousedown"(押下)と"onmouseup"(押上)の二つの事象の組み合わせです

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

2158閲覧

jqueryでhtmlをsortすると、その子要素のon('click')が効かなくなる

sunasuna123go

総合スコア21

onclick

onclickとはユーザーのクリック処理を指します。これは"onmousedown"(押下)と"onmouseup"(押上)の二つの事象の組み合わせです

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/08/21 03:05

編集2020/08/21 03:11

現在、店舗の商品をまとめるWebアプリを作成しています。

今回jQuery周りで問題が発生している2つの機能は以下になります。

【詳細の表示切り替え】
ページには「商品名」とその「詳細」の一覧が表記されており、「商品名」をクリックすると、デフォルトでdisplay: none;になっている「詳細」がjQueryのslideToggleで表示される仕組みです。

【項目順にソート】
ページの上部には「項目」があり、「項目」をクリックすると、jQueryを用いて「タイトル」を「項目」順にsortすることができます。

【問題点】
今回、遭遇した問題点は以下になります。

「詳細」がslideされる機能と、「項目」順にsortされる機能、それぞれ単体では期待通り動作することを確認しました。しかし、一度sortしてから「商品名」をクリックしても「詳細」がslideされなくなります。

ある程度調べたのですが、解決できる答えまで辿りつけなかったです。
jQueryが分かる方いらっしゃいましたら、ご教授宜しくお願いします。

html

1<div class="container"> 2 <div class="sort"> 3 <ul> 4 <li rel="name">名前</li> 5 <li rel="detail">値段</li> 6 </ul> 7 </div> 8 <div class="list"> 9 <div class="product"> 10 <div class="name">〇〇</div> 11 <div class="detail">●●円</div> 12 </div> 13 <div class="product"> 14 <div class="name">□□</div> 15 <div class="detail">■■円</div> 16 </div> 17 <div class="product"> 18 <div class="name">△△</div> 19 <div class="detail">▲▲円</div> 20 </div> 21 </div> 22</div>

CSS

1.detail { 2 display: none; 3}

jQuery

1$(function() { 2 $('.sort ul li').on('click', function() { 3 var rel = $(this).attr('rel'); 4 $('.list').html( 5 $('.product').sort(function(a, b) { 6 var valueA = $(a).find('.'+rel).text(); 7 var valueB = $(b).find('.'+rel).text(); 8 if (valueA < valueB) { 9 return 1; 10 } else { 11 return -1; 12 } 13 }) 14 ); 15 }); 16 $('.name').on('click', function() { 17 $(this).next('.detail').slideToggle(); 18 }); 19});

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

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

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

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

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

guest

回答2

0

ベストアンサー

これでできませんか?

js

1 $('.list').on('click', '.name', function() { 2 $(this).next('.detail').slideToggle(); 3 });

投稿2020/08/21 03:07

編集2020/08/21 03:17
kei344

総合スコア69407

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

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

sunasuna123go

2020/08/21 03:18

お返事ありがとうございます! お返事頂いた箇所の2行目が私の誤字であるのを発見し、質問を編集・修正いたしました。 .next('.result') → .next('.detail') 修正したコードで試してみましたが、依然表示されませんでした。
sunasuna123go

2020/08/21 03:31

再度、お返事頂きましてありがとうございます! コメント頂いたjsFiddleを参考に追加で修正したら、同様にコードが動作しました! 問題点が解決できて、とても嬉しいです。 お時間頂きありがとうございます、大変感謝しております。
guest

0

htmlをソートするのはどうかと思います
jQueryオブジェクトを配列に入れてソートしてみては?

投稿2020/08/21 03:44

yambejp

総合スコア114843

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

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

yambejp

2020/08/21 03:55 編集

$('.sort ul li').on('click', function() { var rel = $(this).attr('rel'); $('.list').append($('.list .product').get().sort(function(a, b){ var valueA = $(a).find('.'+rel).text(); var valueB = $(b).find('.'+rel).text(); if (valueA < valueB) { return 1; } else if (valueA < valueB) { return -1; } else { return 0; } })); });
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問