ラベル jQuery の投稿を表示しています。 すべての投稿を表示
ラベル jQuery の投稿を表示しています。 すべての投稿を表示

2016年11月24日木曜日

htmlにカスタム属性(data-*)を使って、jQueryで簡単アクセスする

どうも、俺です。

HTMLに独自のカスタム属性をつけて、
jQueryで操作できれば便利ということを発見しました。

カスタム属性を使えば、
<img data-hoge="ほげ" src="xxx.png" />

のように、「data-」のあとに好きな文字列を指定して値をセットできます。
data属性には一応仕様が定められており、
1文字以上のアルファベット、数字、ハイフン、アンダースコアが使えるようです。

で、本題はここから。
設定した「data-hoge」にjQueryを使ってアクセスするには、
$("img").data("hoge");

超簡単!!

data属性にJSONをセットもできるので、
<div data-hoge='{"aaaa":"あいうえお", "bbbb":1000}'>
のように指定しておけば、

$("div").data("hoge").aaa;

でアクセス可能!

ちなみに、data属性は複数も指定できます。

<span data-hoge="ほげ" data-fuga="ふが">

以上でぇぇぇす。

2010年10月15日金曜日

jqueryでチェックボックスの状態を取得する

どうも、俺@お昼前です。

jqueryでcheckboxの状態(チェックされているかどうか)を取得する方法めもです。
$("#foo_checkbox").attr("checked");
// または
$("#foo_checkbox").is(":checked");


ちなみに、チェックボックスにチェックを入れる場合は
$("#foo_checkbox").attr("checked", "checked");


チェックボックスのチェックを外すには
$("#foo_checkbox").attr("checked", "");



以上でぇぇぇえぇっぇえぇす。

2010年6月16日水曜日

jQueryを使って別ウィンドウと連携

どうも、俺@残業中です。

今日はjqueryを使って別ウィンドウ(子ウィンドウ)と連携する方法についてメモメモです。

仕様は親ウィンドウにあるインプットボックスに文字を入力すれば、その値を子ウィンドウに表示するものとします。
テスト用に、まず親ウィンドウを開いた瞬間子ウィンドウを開くようにします。
// 親ウィンドウ.js
$(function() {
// 引数は開くファイル名、子ウィンドウ名、そのプロパティ
window.open("child.html", "child", "width=800,height=300");
});
です。
また親ウィンドウにインプットボックスを作ります。
<!-- 親ウィンドウ.html -->
<input type="text" name="name" value="">


次に子ウィンドウ側のjavascriptで、親ウィンドウのインプットボックスに対しEventListenerを貼ります。
// 子ウィンドウ.js
$(function() {
window.opener.$("input").bind("keyup", view);
});
function view() {
$("body").html($(this).val());
}
これだけです。

javascriptのwindow.openerを使って親ウィンドウからの値を子ウィンドウへ渡します。

以上、どえぇぇぇえぇえぇす。

2010年5月14日金曜日

jqueryで自作クラス(プラグイン)を作成する

どうも、俺@仕事一段落中です。
今日は、前々から書こうと思っていたjQueryでの自作クラスの作り方について備忘録としてめもします。
(jqueryでは、クラスとは言わずに「プラグイン」と言うそうです。以降、プラグインと記します)

まず、ファイル命名規則についてですが基本的には
jquery.myplugin.js
とします。

プラグインの基本構造は
(function($) {
var val_1; // フィールド
var val_2; // フィールド
$.fn.myplugin = function(option) {
// 処理
}
}) (jQuery);
こんな感じです。
この例で行くと呼び出し側では
$("div#plugin_test").myplugin({val1:"value1", val2:"value2"});
こんな感じになります。

例えばすごく簡単ですが、
ボタンをクリックする度に現在時刻をHTMLに表示し、テキストボックスに入力された文字をそのボタンへ表示するプラグインを作成してみます。

1)呼び出し(html)側
<head>
<script type="text/javascript" src="./js/jquery-1.4.2.js">
<script type="text/javascript" src="./js/jquery.myplugin.js"></script>
</head>
<body>
<h1>MYPLUGIN</h1>

<input type="text" name="txt">
<input type="button" name="btn" value="push">
<!-- ここへ表示 -->
<div id="result"></div>
</body>
</html>

<script type="text/javascript">
$(function() {
// ボタンがクリックされたら
$("input[name=btn]").click(function() {
// id=resultへ時刻表示とテキストボックスの値をボタンへ表示させる
$("input[name=btn]").myplugin({dest:"result", value:$("input[name=tx]").val()});
});
});
</script>
こんな感じです。

2)プラグイン(jquery)側
(function($) {
var _option; // 値を保持するフィールド
var _dest; // 時刻の表示先ID
var _value; // テキストボックスの値
var _elem; // ボタンエレメント
/**
* コンストラクタ的なもの
* option はhtml側から渡された引数オブジェクト
*/

$.fn.increment = function(option) {
_option = $.extend({
_dest : option.dest, // 時刻表示先ID
_value : option.value, // ボタン表示値
_elem : this // 表示させるボタンエレメント
}, option);

draw();
}

function draw() {
// 日付を指定されたIDに表示させる
var date = new Date();
$("#"+_option._dest).html(date.toGMTString());

// ボタンの表示を変更
_option._elem.val(_option._value);
}

}) (jQuery);
こうです。

何となく理解できるでしょうか。。。
ちょっと例が悪かったです、、実際にコードを書いて試してみて下さい。


以上でぇぇぇす(´・ω・`)

2009年11月11日水曜日

jqueryでポップアップウインドウ

どうも、俺@仕事中です。

mixiのPC版で絵文字入力するときに「絵文字」アイコンをクリックするとポップアップが出て絵文字入力ってありますよね。
今日はあんなポップアップの作り方の勉強です。

まず表示部分。
<html>
<title>
<script type="text/javascript" scr="js/jquery-1.3.2.js">
<!-- ドラッグできるように -->
<script type="text/javascript" scr="js/ui.core.js">
<!-- ドラッグできるように -->
<script type="text/javascript" scr="js/ui.draggable.js">
</title>
<body>
ポップアップ
<hr>

<!-- ポップアップ -->
<div id="popup">
ココにポップアップ表示
</div>
<!-- ポップアップ以外をクリックすれば、ポップアップが消えるように -->
<div id="delete"></div>

</body>
</html>
htmlはこんな感じにしておきます。
<div id="popup"></div>の中にポップアップさせたい内容を書きます。

次はCSS。
div#popup {
position: absolute; /* 移動できるように */
z-index: 99; /* z-indexは高く */
}
div#delete {
position: absolute; /* absoluteで! */
z-index: 0; /* div#popupより低く! */
display: none; /* 初期は非表示 */
}
CSSはこんな感じ。

ではjavascript部分(jQueryを使います)
$(function() {
// パレットをclickでbind()しておく
$("div#popup").bind("click", $(this), popup);

// パレット以外の部分をクリックすると消えるように
$("div#delete").bind("click", function() {
$("div#popup").hide(); // パレットを非表示
$(this).hide(); // 自身も非表示
});
});

function popup(e) {
// パレットを表示
$("div#popup").css({"top":e.pageY-100,"left":e.pageX+50}).show().draggable();

// パレット以外の部分をクリックすると消す部分(mask)の処理
var height = $(document).height();
var width = $(document).width();
$("div#delete").css({"width":width,"height":height,"top":0,"left":0});
$("div#delete").show();
}
こんな感じです。


簡単にサンプルを書きましたが、後はお好みで変えてやればOKです。
ちなみに↑のサンプルソースは動作確認していませんので、もし間違いがあれば連絡くだされ;;


以上でえぇぇぇす。

2009年7月17日金曜日

jQueryでクリックされたエレメントの属性を取得する

どうも、俺@仕事中です。

jQuery+Ajaxを使ってインタラクティブなデザインのシステムを構築中なのですが、ちょっとハマったのでめも。

画面にテーブルとか使って、何かデータを一覧表示した場合に、クリックされた要素のvalue値やname属性の値やidの値とか取りたくて、取りたくて、、、取れなくて1時間悩みました。。。

例えば
<td><a href="foo" id="foo_id" value="foo_value">FOO</a></td>
<td><a href="bar" id="bar_id" value="bar_value">BAR</a></td>
のようなテーブルがあるとします。

これでjQueryで'FOO'をクリックした時に、その<a>タグに指定してあるid値やvalue値を取得したい!場合は
$("a").click(function() {
 id = $(this).attr("id"); // idの取得
 val = $(this).attr("value"); // valueの取得
});
という調べたらすぐ分かるような方法で取得できます。

調べ方ってとっても重要ですね!!
以上~~~~。