【jQuery】JavaScript ライブラリ総合質問所 vol.3

このエントリーをはてなブックマークに追加
910Name_Not_Found:2014/05/17(土) 17:14:55.63 ID:N56s2nQ8
いいかげんうるせえ。
こいつら黙ったら負けだと思ってんだろな。
911Name_Not_Found:2014/05/17(土) 17:16:56.56 ID:???
>>910
早くの他の話をしてくださいw

俺はそれにもレスしますから。

jQuery(セレクタ)なんて書き方をしたら
$(セレクタ)に書き直すようにいいますがww
912Name_Not_Found:2014/05/17(土) 17:19:52.50 ID:???
実は2人はデキてる
913Name_Not_Found:2014/05/17(土) 17:27:22.25 ID:???
>>912
巻き舌でいうのやめて!
914Name_Not_Found:2014/05/17(土) 17:39:21.43 ID:???
jQueryでテキストノードを操作するAPIはありますか?
例えば、jQuery('body') でbody要素ノードを参照できますが、テキストノードを参照して操作したいのですが
915Name_Not_Found:2014/05/17(土) 17:54:46.34 ID:???
>>914
jQueryのテキストノードの扱いって限定的だよね。
具体的に何をしたいかを言えばもっと良い答えが出てくると思うよ。
916914: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でも書くのが目標となります
917Name_Not_Found:2014/05/17(土) 18:51:44.89 ID:???
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); });
918Name_Not_Found:2014/05/17(土) 19:02:27.12 ID:???
これは酷い...

> 1 名前:Name_Not_Found:2014/05/17(土) 17:00:26.40 ID:???
> jQuery および jQuery UI ライブラリの使い方や、
> jQueryプラグインの作り方を質問するスレッドです。
>
> こんなプラグインありませんか?と聞くスレではありません。
> jQueryを使って作る側の質問スレです。
> 探すのは自分で探してください。ろくにサポートもされてなさそうな
> 野良プラグインの使用はおすすめしません。
>
> 前スレ
> 【jQuery】JavaScript ライブラリ総合質問所 vol.3
> http://toro.2ch.net/test/read.cgi/hp/1369444026/

jQuery ライブラリ 総合質問所 vol.4
http://toro.2ch.net/test/read.cgi/hp/1400313626/
919Name_Not_Found:2014/05/17(土) 19:12:10.53 ID:???
Lo-DashをJavaScriptスレに誘導しようとしている人がいたけど、それかな
削除依頼出しておいた
920Name_Not_Found:2014/05/17(土) 19:33:54.11 ID:???
回答者が回答者を釣るスレ
921Name_Not_Found:2014/05/17(土) 19:41:35.36 ID:???
待望の質問が来たというのに彼は回答しないのね
922Name_Not_Found:2014/05/17(土) 19:45:30.51 ID:???
>>917
jQueryじゃなくて$を使ったほうがいいよ

>>921 これでいいかい?
923Name_Not_Found:2014/05/17(土) 19:54:48.86 ID:???
$だとプロトタイプとか、他のライブラリと衝突するけどわざわざ$を使えという理由は?
まあ、俺も$使ってるんだけどさ、他のライブラリ使わないから
924917:2014/05/17(土) 19:57:32.61 ID:???
>>922
回答になってないのですが…
925Name_Not_Found:2014/05/17(土) 20:03:57.65 ID:???
>>923
俺個人としてはあなたに同意するが、触れないほうがいいかと
>>811からの流れを読めばどういう人かわかる
926Name_Not_Found:2014/05/17(土) 20:19:18.27 ID:???
>>923
短いから。jQueryは冗長。jQueryの
ドキュメントを見ても$が使われている。
927Name_Not_Found:2014/05/17(土) 20:20:11.32 ID:???
>>925
そうそう。下手に中途半端な反論をすると
こてんぱんにやられるだけ。
負けるとわかってる勝負はするしない方がいい。
928Name_Not_Found:2014/05/17(土) 20:23:44.01 ID:???
キモい
929Name_Not_Found:2014/05/17(土) 20:30:01.98 ID:???
>>924
> 回答になってないのですが…

わざとwwww

じゃあ、俺以外は回答する気なさそうなので。

http://api.jquery.com/bind/
ここに書いてあるとおり、bindよりもonの方が柔軟なので好ましい。
bindは古いインターフェースで(廃止された)liveが登場してdelegateが登場して、
似たような機能をするメソッドが3つもあったという状況だったのが、
統合されてonが作られたという経緯がある。

一般的にはonを使い、clickなどよく使われる一部のイベントに関しては
ショートカットとして用意されているので、簡単に書きたいときはclickを使う。
930917:2014/05/17(土) 22:34:45.40 ID:???
>>929
基本的に on を使えばいいようですね
ありがとうございました
931Name_Not_Found:2014/05/17(土) 23:02:31.86 ID:???
ここの人達はjavascriptやjQuery以外に何の言語使えるの?
932Name_Not_Found:2014/05/17(土) 23:08:58.63 ID:???
>>931
あなたは何の言語を使えるの?
933Name_Not_Found:2014/05/17(土) 23:23:43.81 ID:???
>>932
PHP、MySQL
Python
Ruby
C/C++
Objective-C
Java
Perl

すいません嘘です
934Name_Not_Found:2014/05/18(日) 01:48:34.82 ID:???
>>930
どういたしまして。

>>931
使えると自分で思う言語としては、JavaScript以外に、
Java、Perl、PHP、C、C++、SQLぐらいかな。

仕事でやったレベルでいいならC#とVB(.NETじゃない方)が加わるか。
アセンブラもやったことあるけど、これははるか昔の16bit時代。

こうやって見るとやばいな。やろうと思って手付かずに
なってる言語のほうが多くなってるw
935Name_Not_Found:2014/05/18(日) 03:52:19.98 ID:???
アプリ側でjqueryを拡張する場合、
jqeury拡張部分は別ファイルにしますか?
936Name_Not_Found:2014/05/18(日) 03:55:50.47 ID:???
>>935
規模によりますが大抵分けます。

ですがこれは作る時の話で、配布するときは
サイズや利用場所を考慮して結合したりします。
937Name_Not_Found:2014/05/18(日) 05:01:53.07 ID:???
ありがとうございました
938914:2014/05/18(日) 05:42:37.49 ID:???
>>915
>>916では情報が足りなかったでしょうか
939Name_Not_Found:2014/05/18(日) 06:00:24.71 ID:???
>>938
いや、XPathよむの面倒くさくてね。よく知らんし。
やってることの説明は日本語でも良かったんだけどねぇ。
標準DOMはやっぱり見にくいなぁって思って他人に任せようかとw
俺以外の人も答えていいんだよ?

まあずる(?)した答えを書くと事例2はこうかな。

$('#Hoge2').html("<span class='foo'>foo</span><span class='bar'>bar</span>";

ようするになんでもDOMやメソッドチェーンで書けばいいってもんじゃないってこと。
HTMLは書き方さえ間違えなければ、簡単で読みやすい言語なんだから
それをそのまま使えばいい。このバランス感覚がない人が多くて困るよ。
どっちか片方しか使おうしない。場合に応じて適切なコードを使い分けられない。
940914: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も選択肢の一つとして残すのが堅実な考え方ではないでしょうか
941Name_Not_Found:2014/05/18(日) 06:35:12.62 ID:???
selector infected PROTOTYPE
942Name_Not_Found:2014/05/18(日) 06:37:06.74 ID:???
> .html() は既存の子要素を上書きしてしまうので、appendChild の代替にはならないと思うのですが…
ああ、ミスった。最後の.htmlをappendに置き換えてくれ。引数は一緒。

> 何か誤解があるようですが、DOM標準の書き方をjQueryで出来るかどうか、という質問をしています
これもまたjQueryの書き方の一つだよ。

ブラウザはHTMLのパースに最適化されている、
つまりネイティブでパース処理を行っているので
JavaScriptを実行して処理を行うDOMを使うよりも速い事が多い。
943Name_Not_Found:2014/05/18(日) 06:39:59.54 ID:???
> 例えば、append した要素ノードに addEventListener したい場合に
var $span1 = $("<span class='foo'>foo</span>").on('click', ・・・)とか出来るよ。
もちろん、$('#Hoge2').append($span1, $span2)なんて書き方もできる。
944Name_Not_Found:2014/05/18(日) 06:46:37.84 ID:???
この人は毎回、質問を斜め読みして質問者に指摘して訂正するパターンだな
945Name_Not_Found:2014/05/18(日) 06:48:09.46 ID:???
間違えた

× 質問者に指摘して訂正するパターン
○ 質問者に指摘されて訂正するパターン
946Name_Not_Found:2014/05/18(日) 06:48:58.02 ID:???
お前は、それに文句言うだけで自分は建設的なこと何も言わないなw


俺以外の人は、俺にレスばっかりして、
質問者にぜんぜんレスしてない。可哀想に。
947Name_Not_Found:2014/05/18(日) 07:04:56.76 ID:???
>>942-943
概ね、把握しました
createTextNode, Text#data の代替はあるでしょうか
948914:2014/05/18(日) 07:08:38.85 ID:???
間違えました
Text#data は CharacterData#data に訂正します
949Name_Not_Found:2014/05/18(日) 09:09:03.31 ID:???
documentのセレクターを文字列で指定するにはどうしたらいいですか?
$(document)

$('document')
と書いたらうまくいきませんでした
950Name_Not_Found:2014/05/18(日) 09:11:36.20 ID:???
>>949
documentは要素ではない為、CSSセレクタで指定できません
951Name_Not_Found:2014/05/18(日) 09:30:10.99 ID:???
文字で指定しなきゃいけないのってどういう状況?
952Name_Not_Found:2014/05/18(日) 10:12:04.43 ID:???
ハンドラの設定をオブジェクトで指定しようと思ったのです
ありがとうございました
953Name_Not_Found:2014/05/18(日) 14:08:01.59 ID:???
>>803
よく見たら、id指定して無いじゃん
954Name_Not_Found:2014/05/18(日) 14:41:47.61 ID:LiCi+bW/
euc-jpのページにて
.load();もしくは.ajax();を使い、日本語の外部ファイル(同ドメイン)を読み込み、
IEで文字化けしない方法はございますでしょうか?
955954: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>
956954:2014/05/18(日) 15:11:48.62 ID:???
色々調べたのですが、実際できた例が
なかったです。もしできたら神です。
957Name_Not_Found:2014/05/18(日) 16:19:39.08 ID:???
いいえ、出来ても神ではありません。ただの人です。
958Name_Not_Found:2014/05/19(月) 02:59:15.91 ID:???
dataってDOM単位に持たせるものですよね?
jqueryオブジェクト自体にデータを持たせたい時はどうしたらいいんでしょうか
959Name_Not_Found
違います