_onichannn

【Javascript】外部JSファイルの実行を遅延させる方法。

めも。

<script src="//example.com/hoge.js"></script>
<script src="//example.com/fuga.js" defer></script>

上記2行目のようにscriptタグに対しdefer属性を追加してやると、そのscriptタグの評価を他全てのscriptタグの評価終了後に遅延させることが出来る。
逆に非同期で外部JSファイルを読み込み逐次評価させたい場合は下記のように、async属性を追加してやればよい。

<script src="//example.com/hoge.js"></script>
<script src="//example.com/fuga.js" async></script>

まぁ普通にjQueryの$(function(){…})でやればいいことなんだけれども。

 

【jQuery】Classの存在チェックを行う。

めも。

■HTML

<div class="target piyo">hoge</div>

■Javascript

<script>
$(function(){
	var c = $('.target').hasClass('piyo');
	console.log(c);
	// true
});
</script>

 

【jQuery】Datepickerを日本語対応させる。

以前の記事←に加えて、下記のスクリプトを読み込むことで日本語化が可能。

<script src="jquery.ui.datepicker-ja.js"></script>

jQuery本体をダウンロードした際に同梱されている「i18n」というフォルダ内に各国のローカライズ用スクリプトが格納されているのでそこから持ってくる。

そして下記コードを記述

// 日本語化する場合
$.datepicker.setDefaults($.datepicker.regional['ja']);
// デフォルトの言語に戻す場合
$.datepicker.setDefaults($.datepicker.regional['']);

特定のカレンダー対してだけローカライゼーションを行いたい場合は下記の通り。

$('selector').datepicker($.datepicker.regional['ja']);

 

【MySQL】LIKEキーワードで前方一致、後方一致検索を行う方法。

めも。

いつもどおりのLIKE文をちょっと変えてやるだけでOK。

まずはいつもの中間一致。

■中間一致

SELECT * FROM table_name WHERE col_name LIKE '%str%';

この場合、文字列中のどこかに「str」が含まれているレコードが取得される。

■前方一致

SELECT * FROM table_name WHERE col_name LIKE 'str%';

対象文字列前の「%」をはずしてやることで「str」から始まるレコードを取得できる。

■後方一致

SELECT * FROM table_name WHERE col_name LIKE '%str';

上記の前方一致に習い、後方一致検索を行う場合は後ろの「%」をはずしてやればよい。これで「str」で終わるレコードを取得できる。

 

【jQuery】指定した要素の中身を空にする。

めも。

remove()だとその要素ごと消し去ってしまうので、子要素のみを空っぽにしたい場合はempty()を用いる。

以下例。

■HTML

<div class="target">hogehogehogehogehogehoge<span>piyopiyopiyo</span></div>

■Javascript

$(function(){
	$('.target').empty();
});

これで外側のdiv要素は残り中身だけを空にする事が出来る。

 

【MySQL】重複行を除いてリストを作成する。

DISTINCT文を用いる。

SELECT DISTINCT [列名], [列名], [列名], ... FROM [テーブル名] WHERE ... ORDER BY ... LIMIT ...

例。

SELECT DISTINCT category FROM items WHERE 1

※上記は重複無しでカテゴリーを全て取得するSQLの例

 

【PHP】array_unshift()の挙動まとめ。

自分用。

$ar = array('a' => 'hoge', 'b' => 'fuga', 'c' => 'piyo');
array_unshift($ar, 'test');
var_dump($ar);
↓
array(4) {
  [0]=>
  string(4) "test"
  ["a"]=>
  string(4) "hoge"
  ["b"]=>
  string(4) "fuga"
  ["c"]=>
  string(4) "piyo"
}


$ar = array('22' => 'hoge', '33' => 'fuga', '44' => 'piyo');
array_unshift($ar, 'test');
var_dump($ar);
↓
array(4) {
  [0]=>
  string(4) "test"
  [1]=>
  string(4) "hoge"
  [2]=>
  string(4) "fuga"
  [3]=>
  string(4) "piyo"
}

キーが文字列の場合情報はそのまま維持され、キーが数字の場合ゼロから振りなおされてしまう。
これは厳重注意。

 

【jQuery】Ajaxの通信を中断させる方法。

めも。

例えば下記のように、Ajaxのスタートボタンとストップボタンを用意したとして。

<input type="button" value="Start" class="js_start">
<input type="button" value="Stop" class="js_stop">

下記のように$.ajax()の結果を変数に格納しておくことで、.abort()による通信の中断が行えるようになる。

<script>
$(function(){
	var ajax;
	$('.js_start').click(function(){
		var url = '/api/url';
		ajax = $.ajax({
			url: url,
			type: 'POST'
		}).done(function(){
			alert('success');
		}).fail(function(){
			alert('error');
		});
	});
	$('.js_stop').click(function(){
		ajax.abort();
	})
});
</script>

これは便利。