【誰か】jQueryのここがわからない【助けて】at TECH
【誰か】jQueryのここがわからない【助けて】 - 暇つぶし2ch674:デフォルトの名無しさん
11/05/26 20:47:25.95
html()のほうかなー
試してないけど違ったらごめんね

675:デフォルトの名無しさん
11/05/26 21:19:33.05
>>674
(´;ω;)html()でも試した
Stringに改行コードが入ってるのがあかんらしい

676:デフォルトの名無しさん
11/05/26 22:21:38.06
$("#hoge").html("hoge<br />hoge") ならいくんじゃない?

677:デフォルトの名無しさん
11/05/26 23:40:50.91
1.2.6,1.5.2,1.6で試したがそんなのにはならんなー
ブラウザとjqueryのバージョンは何?あと再現できるコードを頼む

678:デフォルトの名無しさん
11/05/27 00:02:24.53
>>676
理由がわかりました

cgi から print "$(\"#hoge\").text(\"hoge\nhoge\")" で書き出してるわけだけど、
クライアントに返すソースが
$("#hoge").text("hoge
hoge")
になってた…

printする前に改行コードを\nから%0Aにリプレイスしてから、
javascript側のunescapeで改行コードに戻してやったらうまくいった

だがIEは失敗。なぜかラインフィードが半角スペースにデコードされとる
キャリッジリターンした時だけ何故かIEでもちゃんと改行される
IEしね

679:デフォルトの名無しさん
11/05/27 00:06:50.21
>>677
>>678 の通りです><
cgiからprintでjavascriptを書き出してるのが原因でした…
ちなみにjQueryは1.4.4つかってます

それにしてもIEは本当に問題児だ
だいっ嫌いこんな糞重くてバグだらけのブラウザ

680:デフォルトの名無しさん
11/05/27 00:24:31.14
%0Aより\\nとしてやる方がいいんじゃねーの?

681:デフォルトの名無しさん
11/05/27 01:04:32.17
\\n\\rじゃね?

682:デフォルトの名無しさん
11/05/27 01:26:48.08
|ω・`)おおうっ…そっちの方が美しいですね

>>680さんの通りにしたら、火狐、Chrome ではうまくいきましたが、
やはりIEでは改行されずに\nが半角スペースになってしまいました…

>>681さんはWindowsの改行コードですね
IEではうまく行きましたが、今度は火狐、Chrome が\rで改行、\nで改行と
認識してしまって二重改行になっちゃいました…
あれ?Windowsの改行コードって\\r\\nじゃなかった?と思いやり直したら
火狐、Chrome はうまくいって、IEは二行目以降の行の最初に半角スペースが入り失敗…

IE、火狐、Chrome できちんと改行されるのは\\rにした時だけでした
なぜだろうななんか気持ち悪い
IEがおかしいってのだけはわかる
あとは私の環境の問題かしら…

683:デフォルトの名無しさん
11/05/27 01:55:36.89
submitボタンが押されるとjqueryでtextareaを書き換えてからsubmitするようにしたのですが、
.clickで書き換え後val()をalertすると書き換わってるのですが、送信されるのは書き換わっていません。
どうするべきでしょうか?

684:デフォルトの名無しさん
11/05/27 03:10:17.39
textareaからフォーカスが離れたタイミングで書き換えておくか、データをAjaxで送信するか

685:デフォルトの名無しさん
11/05/27 16:32:25.17
|ω・`)>>682について勘違いをしてたので言及
ちゃんと調べてみたら、\\rでも\\nでも\\r\\nでもIEは改行されてなかった…

-------------------------------------------
<textarea id="hoge"></textarea>
-------------------------------------------
原因は$("#hoge").html(String)でStringに入ってるすべての改行コードがIEでは無視されてしまってた(.text()も同じ)
jQueryのhtml()がアカンのかと思い、document.getElementById("hoge").innerHTML(String)
で試したけど、やはりIEが改行コードを無視する

valueを書き変えたらどうかと試してみたら、
$("#hoge").attr("value", String) とすると改行がIEでもちゃんと反映された
他のブラウザもOK。

という事で解決しました
あどヴぁいす下さった皆さんどうも|ω・`ノシ

686:デフォルトの名無しさん
11/05/27 17:05:53.52
$("#hoge").val("foo\nbar\nbaz");

687:デフォルトの名無しさん
11/05/27 17:44:05.35
>>686
|ω・`)あぅ…無知ですた

688:654
11/05/30 08:06:22.13
>>658
>656のaaaaの部分だけ(やccccの部分だけ)をDOMにせずjQueryオブジェクトのまま取得したり書き換えたりしたいってことです
レスが遅れてすみません

689:デフォルトの名無しさん
11/05/30 16:48:44.24
うへ

690:デフォルトの名無しさん
11/05/30 17:01:57.42
>688
そういうときは変更の対象となる部分をspanの中に入れるから普通は困らないんだけど。
元々のHTMLは変更できないんだよね、きっと。


691:654
11/05/30 18:34:48.02
> 元々のHTMLは変更できないんだよね、きっと。
はい
HTMLは変更できません
つまりテキストノードと要素ノードが共存している場合のテキストノードはjQueryオブジェクトのまま取得・設定できないってことですか

692:デフォルトの名無しさん
11/05/31 13:03:23.96
<div id="aaa"><div id="bbb">test</div></div>

というHTMLに対して

$("#aaa").html()

で<div id="bbb">以下の要素のHTMLテキストが取れるけど
$("#aaa")から<div id="aaa">以下のHTMLテキストを直接取得する方法ってある?

親要素を作って$("#aaa")をappendして.html()で取得するって方法はできたけど
できれば直接取得したい。

693:デフォルトの名無しさん
11/05/31 13:24:13.76
>>692
Fx 対応してないけど outerHTML

694:デフォルトの名無しさん
11/05/31 17:58:05.46
>>693
サンクス
jQueryでブラウザ依存吸収してほしいね。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch