2012-01-26 9 views
0

すべて、検索結果でjqueryダイアログを呼び出せません

ユーザーが画像をクリックしたときにJQueryダイアログボックスを表示しようとしています。

<div class="MyHelpButton" style="display: inline;"> 
    <img src="{{MEDIA_URL}}/img/MyHelpIcon.png"/> 
    <div class="MyHelpText" title="MyTitle"> 
     here <i>is</i> <u>some</u> <b>text</b> 
    </div> 
</div> 

そして、私はJavaScript:ここ

は私のHTMLの機能縮小版だ

$(function() { 
    $(".MyHelpText").dialog({autoOpen:false}); 
    $(".MyHelpButton").click(function() { 
     $(this).find(".MyHelpText").dialog("open"); // this doesn't work 
     //$(".MyHelpText").dialog("open"); // this works 
    }); 
}); 

あなたが見ることができるように、私が使用している場合、ダイアログ( "オープン")機能のみ動作します私はfind()関数を使用するときではなく、クラスセレクターを直接。しかし、潜在的にのロードのMyHelpButtonsがページにあるので、私はこの特定のMyHelpText(クリックされたMyHelpButtonの子であるもの)を見つけることができなければなりません。

私が間違っていることに関するアイデアはありますか?

ありがとうございました。

+0

あなたは可能性がありますあなたの答えの受け入れに少しは働きたい、0%であなた。 .findはアイテムを返さなかったので、開いていません。ドキュメントhttp://api.jquery.com/find/を読んで、何が間違っているかを見てください。 – asawyer

+1

これはうまくいきます: '$($(this).selector +" .MyHelpText ")。dialog(" open ");' http://jsfiddle.net/QGgyq/ – asawyer

+0

これはトリックです。あなたの助けにたくさんのお礼ありがとうございます。 – trubliphone

答えて

1

This works:

$($(this).selector + " .MyHelpText").dialog("open"); 

synatxの$( "{someselector} {anotherselector}")と、セレクタれるが、ここで説明されているよう子孫の検索を実行するためのjQueryを求められます。

http://api.jquery.com/descendant-selector/

0

お試しくださいhttp://jsfiddle.net/heera/cL7nX/3、お手伝いをしてください。

+0

クリックハンドラでuiダイアログを再作成するたびに、厄介なメモリリークのレシピが表示されます。 – asawyer

+0

ダイアログの閉じるボタンのクリックで$(this).remove()を呼び出すとどうなりますか? http://jsfiddle.net/heera/cL7nX/3 –

+0

少なくともIEでSieveをダブルチェックしたところ、その解決策はクリックするたびにダイアログのhtmlオブジェクトのコピーをリークします。 – asawyer

関連する問題