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

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

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

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

jQuery

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

Q&A

解決済

2回答

1287閲覧

JQueryで1つのセレクタに対して複数のメソッドを実行するように実装したい!

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

jQuery

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

0グッド

0クリップ

投稿2018/12/21 00:37

前提・実現したいこと

現在のコードでも動作するのですが、非常に冗長なので簡易化したいです。

現状

HTMLではkey属性にhashキーを持っているdivタグがあり、その子要素としてtitleやbodyクラスを持つタグが存在します。

html

1<div key="0123456789abcdef...."> 2 <div class="title"> 3 ... 4 </div> 5 <div class="body"> 6 ... 7 </div> 8</div>

JQeuryを用いてdivタグを書き換えています。

該当のソースコード

javascript

1$('[key = "<%= @post.key %>"]').children(".title").text("<%= @post.title %>") 2$('[key = "<%= @post.key %>"]').children(".body").text("<%= @post.body %>") 3$('[key = "<%= @post.key %>"]').children(".key").text("<%= @post.key %>")

試したこと

メソッドチェーンなども試しましたが上手くいきませんでした。

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

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

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

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

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

guest

回答2

0

ベストアンサー

いくつか方法はあります。

javascript

1// その1 jQueryオブジェクトを変数に入れておく 2var $elem = $('[key = "<%= @post.key %>"]') 3 4$elem.children(".title").text("<%= @post.title %>") 5$elem.children(".body").text("<%= @post.body %>") 6$elem.children(".key").text("<%= @post.key %>") 7 8// その2 .end()で戻す 9$('[key = "<%= @post.key %>"]').children(".title").text("<%= @post.title %>") 10 .end().children(".body").text("<%= @post.body %>") 11 .end().children(".key").text("<%= @post.key %>")

投稿2018/12/21 00:45

maisumakun

総合スコア145183

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

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

退会済みユーザー

退会済みユーザー

2018/12/21 00:58

JQueryオブジェクトを変数に入れて処理が出来るんですね! JavaScriptの勉強不足です... 詳しい回答をありがとうございました!
guest

0

今回のケースだけでいえばこれでいけますが

javascript

1<script> 2$(function(){ 3 var x={"title":"hoge","body":"fuga","key":"piyo",}; 4 $('[key=123]').find(".title,.body,.key").text(function(){ 5 return x[$(this).attr('class')]; 6 }); 7}); 8</script> 9<div key="123"> 10<div class="title"></div> 11<div class="body"></div> 12<div class="key"></div> 13</div>

classは複数指定ができるので、必ずしもこれは正しくありません
つなげるだけならendでもどる

javascript

1$(function(){ 2 var x={"title":"hoge","body":"fuga","key":"piyo",}; 3 $('[key=123]') 4 .find(".title").text(x.title).end() 5 .find(".body").text(x.body).end() 6 .find(".key").text(x.key); 7}); 8

これではあまり意味がないような・・・
あとはwithとか

javascript

1$(function(){ 2 var x={"title":"hoge","body":"fuga","key":"piyo",}; 3 with($('[key=123]')){ 4 find(".title").text(x.title); 5 find(".body").text(x.body); 6 find(".key").text(x.key); 7 } 8});

投稿2018/12/21 01:07

yambejp

総合スコア114779

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問