2009-08-24 10 views
2

私は自分のHTMLからJavaScriptコードを分離しようとしています。私はメソッドに渡しているだけで、パラメータを含む属性へのonclickを交換したいと思います控えめなJavaScript - 安全な属性?

<div onclick="return do_something_with('100566');" class="clickable">Click Me!</div> 

:私は現在、このようなコードを持っています。

は、私は次のコードタイプで、このためにjQueryを使用しています:

var $j = jQuery; 
$j(function(){ 
    $j('.clickable').live('click',function(){ 
     param = $j(this).attr('attribute_name'); 
     do_something(param); 
    }); 
}); 
私は、このパラメータ値を通信するための安全であろう「ATTRIBUTE_NAME」のために使用することができますどのような属性

?私はIDを使用することができますが、私はすでに、DOMの別の場所に同じidを持つ要素を定義していたでしょう。

提案がありますか?

+0

参照:http://stackoverflow.com/questions/432174/how-to-store-arbitrary-data-for-some-html-tags http://stackoverflow.com/questions/439110/is-it -all-right-to-add-custom-html-attributes http://stackoverflow.com/questions/994856/so-what-if-custom-html-attributes-arent-valid-xhtml http:// stackoverflow 。 – nickf

答えて

0

aタグを作ってみませんか?アンカー(#someThing)の部分を使用するサイトや、rel属性を使用するサイトがいくつかあります。

+0

私は多くのアプリケーションでこれを行うことができますが、divがxイベントをリッスンし、複数のパラメータを渡す必要があるかもしれない他の領域を探しています。 –

+0

Divは、テキストデータではないブロック要素の平均です。 '#param1、param2'のように'# 'をカンマ区切りにすることができます。 –

+0

イベントを待ち受け、他のブロックでアクションを実行するいくつかのブロック要素があります。私はそれが奇妙に聞こえることを知っていますが、それはクライアントからの要件です。 私のアプローチは、可能な限りタグを使用し、パラメータの受け渡しの多くをrelとhrefで行うことです。私は、複数のパラメータに対してコンマまたはスペースで区切られたリストを使用します。 既に使用されている要素IDをパラメータとして渡す必要のある要素については、id = "{word} - {real_id}"も好きです。 応答いただきありがとうございます。私はもっ​​と多くのコメントを投票しただろうが、私はここで新しいので、まだその特権はない。 –

0

class属性またはtitle属性は、スペースで区切られたパラメータのリストとして使用できます。タイトルの欠点は、あなたの要素が推移たとき、それはポップアップとして表示されるでしょうということです。

<div class="clickable param1 param2 param3"> 

または

<div class="clickable" title="param1 param2 param3"> 

ここでは、あまりにも検討するかもしれないother attributesのリストです。

+0

私はむしろ前に述べた "ホバー"の理由のためにタイトルを使用しません。特定のリスナーを追加するためのセレクターとしてクラスを使用しているので、私はそれも離れていると思います。 –

2

私はよく、idを使用して固有のものにするか、または隠された<span>にデータを貼り付けます。

1

divaにrelタグを使用できませんでしたか? 1つのパラメータまたはn個のパラメータをdoSomethingに渡すことができます。だから今paramはdoSomethingのために送られたとき

<div> 
    <a class="clickable" rel="param1 param2 param3">Click Me!</a> 
</div> 

ことでパラメータを介して送信されているかどうか確認するために使用することができparam.indexOf("param1")スペースで区切られたリスト?

+0

私はそれを作ったでしょう:

ちょうど安全で有効です... – jsnfwlr

4

私は通常Client-100566のような意味の接頭辞を追加して、このコードを使用してアクセス:

var param = $(this).attr("id").split("-")[1]; 

編集:無効なすべての-番号IDトークンの削除提案。

+0

私は本当にこのアイデアが好きです。私はそれが私が必要とする多くのもののために働くと思う。 –

+0

あなたは**とにかく接頭辞を追加する必要があります。番号付きのIDを開始することはできません(ただし、有効なHTMLです)。http://www.w3schools.com/tags/att_standard_id.asp – nico

+0

ああ、私はそれを知らなかった。検証するために、W3C標準(http://www.w3.org/TR/REC-html40/types.html#type-name)でダブルチェックしました。 – cdmckay

0

任意の属性名を構成できます。

<div onclick="foo();" silkyvalue="12938">hello</div> 

私は通常、「my_somethingID」のようにいくつかの命名フォーマットに行きます。

+1

これは有効なHTMLではありません。 –

+0

実際はそうです。 –

+0

さて、あなたはどちらも間違っています。 HTML *であれば、特定のdoctypeの下でW3Cの検証機構を渡すことはできませんが、有効です。カスタム属性の別の例は 'accesskey'です。これは電話で、押した番号をリンクにマップするために使用されます。どちらも慣れていなくても、このアプローチを使用することは完全に容認されます。 OPの根底にある問題を解決する最良の方法であるかどうかについては議論の余地があります。しかしそれは有効です。 –

関連する問題