• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:jQueryオブジェクトに対する変更)

jQueryオブジェクトに対する変更

このQ&Aのポイント
  • jQueryオブジェクトに対する変更は可能?
  • 特定のpタグを含むhtmlコードをオブジェクト化し、その中のulタグとdivタグの内容を変更することはできるのか検証しています。
  • 詳しい回答をお待ちしています。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

>悩んでいるポイントは「← ココ」の部分です。 何をどう悩んでいるのかが不明なので、以下の回答は的外れかもしれませんが、違っていたらスルーしてください。 確認はしていませんが… 御提示のHTMLはパース時に <p id="hogehoge"></p> <ul> <li>aaaaaa</li> <li>bbbbbb</li> </ul> <div id="foo"><strong>cccccc</strong></div> <p></p> として解釈されると思いますので、そのままでは(多分)ご希望の結果は得られないかと思います。 それは置いておくとして、 HTMLの構成が事前にわかっているのであれば、それに沿って子孫要素を特定すればよいだけなので、通常の処理でできるはずかと思います。 例えば、html_objに全体を包括する要素(のクローン)が取得できているとすれば   $("li", html_obj) とか   html_obj.find("li") とすることで、子孫のli要素が取得できますので、普通に内容を入替えればよろしいかと。 ただし、idを持つ要素のクローンを作成する場合、idが一意でなくなる可能性がありますのでご注意を。

kamuycikap
質問者

お礼

回答ありがとうございます。 確かに・・・・記述したサンプルのタグは間違っていますね。 御指摘ありがとうございます。 基本的な考え方が間違っていた様子です。 教えていただきました「html_obj.find("li")」を下記のようにすることで目的の動作を実現できました。 関数の引数(HTMLタグ文字列)として、下記のvar行にある変数htmlを渡していたのですが、そのHTMLを加工して関数の戻り値にできないかと試行錯誤していた次第です。 var html_obj = $("#hogehoge",html).clone(); html_obj.find("ul").append("<li>あいうえお</li>"); html_obj.find("#id strong").text("あいうえお"); return html_obj; 大変助かりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • HTMLの質問です

    divタグの中にリストを2つ入れてますが、中断に<p>タグで「AAAAAAAAAA」を入れてます。 1つのdivタグ内に2つのulタグを入れるのは、基本的に間違いではないですよね? <div id="test"> <ul> <li>ああああああああああ</li> <li>いいいいいいいいいい</li> <li>ううううううううううううう</li> <li>ええええええええええ</li> <li>おおおおおおおおお</li> </ul> <p>AAAAAAAAAAAAA</p> <ul> <li>ああああああああああ</li> <li>いいいいいいいいいい</li> <li>ううううううううううううう</li> <li>ええええええええええ</li> <li>おおおおおおおおお</li> </ul> </div>

    • ベストアンサー
    • HTML
  • jquery中のmatch関数が正常に動作しません

    <ul> <li id="1" class="comment-set"> <div class="txt"> foo1 </div> </li> <li id="2" class="comment-set"> <div class="txt"> foo2 </div> </li> <li id="3" class="comment-set"> <div class="txt"> foo3 </div> </li> <li id="4" class="comment-set"> <div class="txt"> >>1 foo4 </div> </li> <li id="5" class="comment-set"> <div class="txt"> foo5 </div> </li> </ul> というリストの中で、>>1などとアンカーがついているli要素のみ削除したいと思います。 (上の例だとid="4"のli要素です) 下からループして、文章中に">>(数字)"の形を含むものを見つけたらremove処理を実行しようと思います。 そこで以下のようなコードを書いて走らせたのですが、動作しません。 <script type="text/javascript"> $(function() { var size = $('li.comment-set').length; while(size>0) { var foo='#'+size; console.log(foo); var bar = $(foo).match(/\>\>(\d+)$/); if(bar){ $(foo).remove(); } size = size-1; } }); </script> コンソールには、 [15:21:28.514] TypeError: $(...).match is not a function @ http://localhost/comment_test/index.php:80 というエラーが表示されています。 原因に皆目見当がつかないため、どなたか解決方法を教えていただきたいです。 よろしくお願いいたします。

  • objectタグを使って背景を透明にしたいのですが

    objectタグを使ってindex.html内にmenu.htmlを表示させたのですが、呼び出したmenu.htmlの背景が白くなってしまいました。 個人的には重なっても背景を透明にし、index.htmlが見えるようにしたいと考えています。 対応策はあるでしょうか?お願いします。 【index.html】 <style> div#container { background: url(bg_container.jpg); } </style> </head> <body> <div id="container"> <object type="text/html" data="menu.html" width="200px" height="570px"></object> </div> </body> 【menu.html】 <style> body{ margin: 0; padding: 0; overflow: hidden; border: none; } div#menu_in { width: 200px; height: 570px; } </style> </head> <body> <div id="menu_in"> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul> </div> </body>

  • jquery教えて下さい。

    現在、 <script type="text/javascript"> $(function(){ $("#btn1","#test2").click(function () { $("div","#test2").slideDown(3000); }); }); </script> のコードで btn1のidボタン▼をクリックすると test2がslidedownするコードを造っているのですが これをボタンを押さずに ページがひらいたと同時にスライドするにはどのように すればよろしいでしょうか? 宜しくお願いします。 <div id="test2"> <div style="display:none;"><div class="slide"> <ul> <li class="setsumei1">test1</li> <li class="setsumei1">test2</li> <li class="setsumei1">test3</li> <li class="setsumei1">test4</li> </ul> </div></div> <div id="btn1">▼</div> </div>

  • jqueryで特定の要素をdivで囲う

    jqueryを使い、HTMLの特定の要素をdivで囲いたいと思っています。 元のHTMLのソースは、 ========= <div class="tabWrap02 tabSwitcher materialityRefine"> <h2 class="headline06 jqa mb20" style="display: none;"></h2> <ul class="tabNav range9Col textSmall organizationRefine range17Col upper"> <li class="needTitle active" style="height: 50px;"></li> <li></li> <li></li> </ul> <ul class="spAcodNav"> <li class=""></li></ul><div id="tab02-1" class="tabDetail" style="display: none;"> <li></li> </ul> <div id="tab02-1" class="tabDetail" style="display: none;"> </div> <ul class="spAcodNav"> <li class=""></li></ul><div id="tab02-2" class="tabDetail" style="display: none;"> <li></li> </ul> <div id="tab02-2" class="tabDetail" style="display: none;"> </div> <h2 class="headline06 mb20">×××</h2> <ul class="tabNav range8Col textSmall mb50 range17Col upper"> <li class="active" style="height: 65px;"></li> <li></li> <li></li> </ul> <h2 class="headline06 jqa mb20" style="display: none;"></h2> <ul class="tabNav range9Col textSmall organizationRefine range17Col upper"> <li class="needTitle active" style="height: 50px;"></li> <li></li> <li></li> </ul> <ul class="spAcodNav"> <li class=""></li></ul><div id="tab02-3" class="tabDetail" style="display: none;"> <li></li> </ul> <div id="tab02-3" class="tabDetail" style="display: none;"> </div> <ul class="spAcodNav"> <li class=""></li></ul><div id="tab02-4" class="tabDetail" style="display: none;"> <li></li> </ul> <div id="tab02-4" class="tabDetail" style="display: none;"> </div> </div> ========= このようになっております。 上記のソースを、以下のように2か所<div class="wrap">で<ul class="spAcodNav">を囲いたいと思っています。 ========= <div class="tabWrap02 tabSwitcher materialityRefine"> <h2 class="headline06 mb20">●●●</h2> <ul class="tabNav range8Col textSmall mb50 range17Col upper"> <li class="active" style="height: 65px;"></li> <li></li> <li></li> </ul> <h2 class="headline06 jqa mb20" style="display: none;"></h2> <ul class="tabNav range9Col textSmall organizationRefine range17Col upper"> <li class="needTitle active" style="height: 50px;"></li> <li></li> <li></li> </ul> <div class="wrap"> <ul class="spAcodNav"> <li class=""></li></ul><div id="tab02-1" class="tabDetail" style="display: none;"> <li></li> </ul> <div id="tab02-1" class="tabDetail" style="display: none;"> </div> <ul class="spAcodNav"> <li class=""></li></ul><div id="tab02-2" class="tabDetail" style="display: none;"> <li></li> </ul> <div id="tab02-2" class="tabDetail" style="display: none;"> </div> </div> <h2 class="headline06 mb20">×××</h2> <ul class="tabNav range8Col textSmall mb50 range17Col upper"> <li class="active" style="height: 65px;"></li> <li></li> <li></li> </ul> <h2 class="headline06 jqa mb20" style="display: none;"></h2> <ul class="tabNav range9Col textSmall organizationRefine range17Col upper"> <li class="needTitle active" style="height: 50px;"></li> <li></li> <li></li> </ul> <div class="wrap"> <ul class="spAcodNav"> <li class=""></li></ul><div id="tab02-3" class="tabDetail" style="display: none;"> <li></li> </ul> <div id="tab02-3" class="tabDetail" style="display: none;"> </div> <ul class="spAcodNav"> <li class=""></li></ul><div id="tab02-4" class="tabDetail" style="display: none;"> <li></li> </ul> <div id="tab02-4" class="tabDetail" style="display: none;"> </div> </div> </div> ========= jqueryでwrapAllなどを使って試しているのですが、うまいいかず、 お分かりいただける方いらっしゃいましたらご教授いただけますと幸いです。 よろしくお願い致します。

  • オブジェクトがありませんのエラー

    過去ログを呼んで近いのがあったのでよく読んだのですが よくわかりませんので書き込みします。 以下のスクリプトで「オブジェクトがありませんのエラーが発生します。3行目のfor文の「obj.childNodes」でエラーが発生します。 「document.getElementById」が「null」であるのが原因のようですが、なぜ「document.getElementById」に値が入らないのかがつかめません。 お手数ですがよろしくお願いします 【script】 --------------------------------------------- if(document.getElementById && document.all && !navigator.userAgent.match(/Opera/)){ var obj = document.getElementById("mainmenu"); for(var i=0;i<obj.childNodes.length;i++){ if(obj.childNodes[i].className=="pullmenu"){ obj.childNodes[i].onmouseover = function(){pull(this) }; obj.childNodes[i].onmouseout = function(){pull(this) }; } } } --------------------------------------------- 【html】 --------------------------------------------- <ul id="mainmenu"> <li id="Begginer" class="pullmenu"><a href="http://www.○○○.co.jp/b/w.php">○○○</a> <ul> <li><a href="http://www.○○○.co.jp/b/w.php">○○○ </a></li> <li><a href="http://www.○○○.co.jp/b/s.php">○○○ </a></li> <li><a href="http://www.○○○.co.jp/b/m.php">○○○ </a></li> </ul> </li> </ul>

  • 同じjqueryを2つ並べて動かしたいけど動かない

    いつもお世話になっています。 http://39kn.com/2011/06/05/5528/ のものを横に並べて動かしたいのですが下のソースの書き方をすると手前だけ動いて、2つめは動きません。 どうすれば動きますか?? 理想は■が1つのスライダーデモの部分だとすると、■■と横に並ぶ形で使いたいです。 <body> <div class="1"> <div id="scroller"> <div class="scroller-title"> <span class="left">ドメイン&レンタルサーバー</span> <span class="right"> <div id="controller"> <div id="stop_scroll_cont"><a id="stop_scroll"><img src="images/stop.png" align="absmiddle" /></a> Stop Scroll</div> <div id="play_scroll_cont"><a id="play_scroll"><img src="images/play.png" align="absmiddle"/></a> Play Scroll</div> </span> </div> </div><!-- /scroller --> <div id="Vertical"> <ul id="TickerVertical"> <li><img src="photo" width="450" height="150" /></li> <li><img src="photo" width="450" height="150" /></li> <li><img src="photo" width="450" height="150" /></li> <li><img src="photo" width="450" height="150" /></li> </ul> </div><!-- /Vertical --> </div> <div class="2"> <div id="scroller"> <div class="scroller-title"> <span class="left">ドメイン&レンタルサーバー</span> <span class="right"> <div id="controller"> <div id="stop_scroll_cont"><a id="stop_scroll"><img src="images/stop.png" align="absmiddle" /></a> Stop Scroll</div> <div id="play_scroll_cont"><a id="play_scroll"><img src="images/play.png" align="absmiddle"/></a> Play Scroll</div> </span> </div> </div><!-- /scroller --> <div id="Vertical"> <ul id="TickerVertical"> <li><img src="photo" width="450" height="150" /></li> <li><img src="photo" width="450" height="150" /></li> <li><img src="photo" width="450" height="150" /></li> <li><img src="photo" width="450" height="150" /></li> </ul> </div><!-- /Vertical --> </div> </body> </html>

  • jQuery 子孫セレクタがうまくいかない

    最近jQueryを勉強しはじめた者です。勉強していく中で、 疑問が生じたので、質問させていただきます。 jQueryの子孫セレクタが意図したとおりに動きません。 具体的には : $(function(){ $("p strong").remove(); }); : <p><em><strong>削除される</strong>abcdefg</em></p> <p><div><strong>削除されるはず</strong>abcdefg</div></p> : と記述した時、  <strong>削除されるはず</strong>  の部分が削除されません。   <strong>削除される</strong>  の部分は削除されます。 以下のときは、2つとも削除されます。 : $(function(){ $("li strong").remove(); }); : <ol> <li><em><strong>削除される</strong>abcdefg</em></li> <li><div><strong>削除されるはず</strong>abcdefg</div></li> </ol> : 私は、どの場合であっても削除されると考えていました。 ブロックレベル要素とインライン要素が関係していそうな感じはするのですが、 なぜ、このようになるか理由がわかりません。 よろしくお願い申し上げます。

  • JQueryについて教えて下さい。

    html部分は <ul>  <li>テスト1です。</li>  <li>テスト2です。</li>  <li>テスト3です。</li> </ul> <div id="test">test</div> となっており、 スクリプト部分は、 $("ul li:not(:first)").css("display","none"); $("#test").click(function(){   if($("+li",this).css("display")=="none"){     $("li").slideUp("slow");     $("+li",this).slideDown("slow");   } }); としています。 やりたいことは、"test"をクリックしたら、 次の"li"が表示されるようにしたいのですが、 動きません。 どなたかご教授よろしくです。

  • タグを切り替えるJavaScriptについて

    下記のurlを参考にして、タグを切り替えるJavaScriptを使いレイアウトをしています。 http://archiva.jp/web/javascript/tab-menu.html やりたいことは各内容をIDセレクタでくくりたいのです。 <div id="page1">  <h2>page1</h2>  <p>パンクズ</p>  <div class="nav">   <ul id="tab">    <li><a href="#page1"><span>page1を選択中</span></a></li>    <li><a href="#page2"><span>page2</span></a></li>    <li><a href="#page3"><span>pave3</span></a></li>   </ul>  </div>  <p>段落1</p> </div> <div id="page2">  <h2>page2</h2>  <p>パンクズ</p>  <div class="nav">   <ul id="tab2">    <li><a href="#page1"><span>page1</span></a></li>    <li><a href="#page2"><span>page2を選択中</span></a></li>    <li><a href="#page3"><span>pave3</span></a></li>   </ul>  </div>  <p>段落1</p> </div> ...page3 このようにやりたいのですが、JavaScriptがIDセレクタの"tab"にしか対応していないため、他のページにいくとクリックが効かなくなってしまいます。 idセレクタをclassセレクタに設定し直してもidセレクタにしか対応していないため効きません。 tag2とtab3に対応させるためにはどのようにすればいいでしょうか。 よろしくお願いします。