【jQuery】JavaScript ライブラリ総合質問所 vol.3
910 :
Name_Not_Found:2014/05/17(土) 17:14:55.63 ID:N56s2nQ8
いいかげんうるせえ。
こいつら黙ったら負けだと思ってんだろな。
>>910 早くの他の話をしてくださいw
俺はそれにもレスしますから。
jQuery(セレクタ)なんて書き方をしたら
$(セレクタ)に書き直すようにいいますがww
実は2人はデキてる
jQueryでテキストノードを操作するAPIはありますか?
例えば、jQuery('body') でbody要素ノードを参照できますが、テキストノードを参照して操作したいのですが
>>914 jQueryのテキストノードの扱いって限定的だよね。
具体的に何をしたいかを言えばもっと良い答えが出てくると思うよ。
916 :
914:2014/05/17(土) 18:22:02.06 ID:???
>>915 なるほど、具体例がなかったですね
例えば、下記コードを jQuery で書くとどうなるでしょうか
// 事例1
document.evaluate('id("Hoge1")/child::text()[1]', document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0).data = 'hoge';
// 事例2
var df = document.createDocumentFragment(), span = document.createElement('span');
span.classList.add('foo');
span.appendChild(document.createTextNode('foo'));
df.appendChild(span);
span = span.cloneNode(true);
span.className = 'bar';
span.firstChild.data = 'bar';
df.appendChild(span);
document.getElementById('Hoge2').appendChild(df);
DOM標準と同じようにjQueryでも書くのが目標となります
jQuery において下記は全て同じ動作となりますが、使い分ける必要はあるでしょうか
jQuery('body').click(function (event) { console.log(event.type); });
jQuery('body').bind('click', function (event) { console.log(event.type); });
jQuery('body').on('click', function (event) { console.log(event.type); });
Lo-DashをJavaScriptスレに誘導しようとしている人がいたけど、それかな
削除依頼出しておいた
回答者が回答者を釣るスレ
待望の質問が来たというのに彼は回答しないのね
$だとプロトタイプとか、他のライブラリと衝突するけどわざわざ$を使えという理由は?
まあ、俺も$使ってるんだけどさ、他のライブラリ使わないから
924 :
917:2014/05/17(土) 19:57:32.61 ID:???
>>923 俺個人としてはあなたに同意するが、触れないほうがいいかと
>>811からの流れを読めばどういう人かわかる
>>923 短いから。jQueryは冗長。jQueryの
ドキュメントを見ても$が使われている。
>>925 そうそう。下手に中途半端な反論をすると
こてんぱんにやられるだけ。
負けるとわかってる勝負はするしない方がいい。
キモい
>>924 > 回答になってないのですが…
わざとwwww
じゃあ、俺以外は回答する気なさそうなので。
http://api.jquery.com/bind/ ここに書いてあるとおり、bindよりもonの方が柔軟なので好ましい。
bindは古いインターフェースで(廃止された)liveが登場してdelegateが登場して、
似たような機能をするメソッドが3つもあったという状況だったのが、
統合されてonが作られたという経緯がある。
一般的にはonを使い、clickなどよく使われる一部のイベントに関しては
ショートカットとして用意されているので、簡単に書きたいときはclickを使う。
930 :
917:2014/05/17(土) 22:34:45.40 ID:???
>>929 基本的に on を使えばいいようですね
ありがとうございました
ここの人達はjavascriptやjQuery以外に何の言語使えるの?
>>932 PHP、MySQL
Python
Ruby
C/C++
Objective-C
Java
Perl
すいません嘘です
>>930 どういたしまして。
>>931 使えると自分で思う言語としては、JavaScript以外に、
Java、Perl、PHP、C、C++、SQLぐらいかな。
仕事でやったレベルでいいならC#とVB(.NETじゃない方)が加わるか。
アセンブラもやったことあるけど、これははるか昔の16bit時代。
こうやって見るとやばいな。やろうと思って手付かずに
なってる言語のほうが多くなってるw
アプリ側でjqueryを拡張する場合、
jqeury拡張部分は別ファイルにしますか?
>>935 規模によりますが大抵分けます。
ですがこれは作る時の話で、配布するときは
サイズや利用場所を考慮して結合したりします。
ありがとうございました
938 :
914:2014/05/18(日) 05:42:37.49 ID:???
>>938 いや、XPathよむの面倒くさくてね。よく知らんし。
やってることの説明は日本語でも良かったんだけどねぇ。
標準DOMはやっぱり見にくいなぁって思って他人に任せようかとw
俺以外の人も答えていいんだよ?
まあずる(?)した答えを書くと事例2はこうかな。
$('#Hoge2').html("<span class='foo'>foo</span><span class='bar'>bar</span>";
ようするになんでもDOMやメソッドチェーンで書けばいいってもんじゃないってこと。
HTMLは書き方さえ間違えなければ、簡単で読みやすい言語なんだから
それをそのまま使えばいい。このバランス感覚がない人が多くて困るよ。
どっちか片方しか使おうしない。場合に応じて適切なコードを使い分けられない。
940 :
914:2014/05/18(日) 06:30:23.89 ID:???
>>939 .html() は既存の子要素を上書きしてしまうので、appendChild の代替にはならないと思うのですが…
> ようするになんでもDOMやメソッドチェーンで書けばいいってもんじゃないってこと。
何か誤解があるようですが、DOM標準の書き方をjQueryで出来るかどうか、という質問をしています
.html() は内部的に innerHTML を使用していますが、innerHTML を使用したくないケースもあるのです
例えば、append した要素ノードに addEventListener したい場合に querySelector で要素ノードを取得するのは無駄になります
DOMの書き方をjQueryで出来るのならjQueryの有効範囲が広がります
バランス感覚を述べるならDOMの書き方を否定するのではなく、DOMも選択肢の一つとして残すのが堅実な考え方ではないでしょうか
selector infected PROTOTYPE
> .html() は既存の子要素を上書きしてしまうので、appendChild の代替にはならないと思うのですが…
ああ、ミスった。最後の.htmlをappendに置き換えてくれ。引数は一緒。
> 何か誤解があるようですが、DOM標準の書き方をjQueryで出来るかどうか、という質問をしています
これもまたjQueryの書き方の一つだよ。
ブラウザはHTMLのパースに最適化されている、
つまりネイティブでパース処理を行っているので
JavaScriptを実行して処理を行うDOMを使うよりも速い事が多い。
> 例えば、append した要素ノードに addEventListener したい場合に
var $span1 = $("<span class='foo'>foo</span>").on('click', ・・・)とか出来るよ。
もちろん、$('#Hoge2').append($span1, $span2)なんて書き方もできる。
この人は毎回、質問を斜め読みして質問者に指摘して訂正するパターンだな
間違えた
× 質問者に指摘して訂正するパターン
○ 質問者に指摘されて訂正するパターン
お前は、それに文句言うだけで自分は建設的なこと何も言わないなw
俺以外の人は、俺にレスばっかりして、
質問者にぜんぜんレスしてない。可哀想に。
>>942-943 概ね、把握しました
createTextNode, Text#data の代替はあるでしょうか
948 :
914:2014/05/18(日) 07:08:38.85 ID:???
間違えました
Text#data は CharacterData#data に訂正します
documentのセレクターを文字列で指定するにはどうしたらいいですか?
$(document)
を
$('document')
と書いたらうまくいきませんでした
>>949 documentは要素ではない為、CSSセレクタで指定できません
文字で指定しなきゃいけないのってどういう状況?
ハンドラの設定をオブジェクトで指定しようと思ったのです
ありがとうございました
954 :
Name_Not_Found:2014/05/18(日) 14:41:47.61 ID:LiCi+bW/
euc-jpのページにて
.load();もしくは.ajax();を使い、日本語の外部ファイル(同ドメイン)を読み込み、
IEで文字化けしない方法はございますでしょうか?
955 :
954:2014/05/18(日) 15:02:35.06 ID:LiCi+bW/
こんな構造です
--------------------------
親ファイル<meta charset="euc-jp">
--------------------------
<script src="
http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script>
$(function(){
$.ajax({
type: 'GET',
url: 'file.php',
dataType: 'html',
success: function(data) {
$('#content1').append(data);
error:function() {
alert('error');
}
});
});
</script>
<div id="content1">親euc-jp</div>
--------------------------
子ファイル<meta charset="euc-jp">
--------------------------
<p>外部ファイル|子euc.jp|IEで文字化け</p>
956 :
954:2014/05/18(日) 15:11:48.62 ID:???
色々調べたのですが、実際できた例が
なかったです。もしできたら神です。
いいえ、出来ても神ではありません。ただの人です。
dataってDOM単位に持たせるものですよね?
jqueryオブジェクト自体にデータを持たせたい時はどうしたらいいんでしょうか
違います