質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery UI

jQuery UI はjQuery公式のインターフェースライブラリであり、対話型のウェブアプリケーションを作る際に役立ちます。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

ASP.NET MVC 4

ASP.NET MVC4は、MVCパターンを利用して、高度なテスト機能と保守機能を備えた Web アプリケーションを開発するためのフレームワークです。

Q&A

解決済

1回答

3741閲覧

Ajax更新箇所をクリックしてjQuery UI のdialogを表示する方法を知りたいです。

ssyk

総合スコア36

jQuery UI

jQuery UI はjQuery公式のインターフェースライブラリであり、対話型のウェブアプリケーションを作る際に役立ちます。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

ASP.NET MVC 4

ASP.NET MVC4は、MVCパターンを利用して、高度なテスト機能と保守機能を備えた Web アプリケーションを開発するためのフレームワークです。

0グッド

1クリップ

投稿2015/11/16 04:28

編集2015/11/16 04:36

ajaxを使って更新している箇所に記述されているid属性やclass属性をトリガーとして、jQuery UIのdialogを表示する方法をご教示いただけたら幸いです。

下記のようにformを使ってビュー(index.cshtml)全体を更新する方式だと①をクリックすることでdialogメッセージを表示することができました。****


@model IEnumerable<hoge.Models.hogeViewModel>

@using (Html.BeginForm("hoge", "hoge"))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<input id="search" type="button" value="一覧表示" />
</div>
}

<table class="table"> @foreach (var item in Model) { <tr> <td> <h5><a href="#" class="showdialog">@item.hoge</a></h5>**←①クリックすることでdialogメッセージを表示する** </td> </tr> } </table> <div id="showDialogDef" style="display: none;"> ダイアログメッセージ表示成功 </div>
// ↓↓Javascriptコード @section scripts { <script type="text/javascript"> $(function() { $("#showDialogDef").dialog({ autoOpen: false, modal: true, buttons: { "閉じる": function () { $(this).dialog('close'); } }, show: { effect: "clip" }, hide: { effect: "clip" } }); $('.showdialog').click(function () { $('#showDialogDef').dialog('open'); }); }) </script> }

上記の<table></table>の範囲を部分ビュー(_ShowList.cshtml)に転記し、Ajaxを使って部分更新する方式に変えたところ
①をクリックしても何も起こらない状況です。


//↓↓index.cshtml

@model IEnumerable<hoge.Models.hogeViewModel>

@using (Ajax.BeginForm("hoge", "hoge", new AjaxOptions {
UpdateTargetId = "result",
}))
{
@Html.AntiForgeryToken()
<button id="Search" type="submit" value="Search">一覧表示</button>
}
<div id="result"></div>

下記コードをindex.cshtmlのjavascriptに追加しました。

$('#search').click(function () { $('#result').load('/hoge/hoge',); });

//↓↓_ShowList.cshtml
@model IEnumerable<GGPediaSystem.Models.SearchResultViewModel>

<table class="table"> @foreach (var item in Model) { <tr> <td> <h5><a href="#" class="showdialog">@item.hoge</a></h5>←①クリックしても何も起こらない(dialogメッセージを表示したいです) </td> </tr> } </table> ---

最終的に展開されるindex.cshtmlにjavascriptやdialog表示内容(<div></div>)が記載されていればよいと思っておりましたが、試しに部分ビュー側(_ShowList.cshtml)にjQueryのインポート、javascriptのコード、dialog表示内容(<div></div>)を書いても状況は変わりませんでした。

Ajaxを使って部分更新させた場合でもdialogメッセージを表示する方法をご教示いただけたら幸いです。

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

javascript

1$('#search').click(function () { 2 $('#result').load('/hoge/hoge',); 3});

上記を見る限り、後からloadされた<a class='showdialog'></a>には、ダイアログをopenするクリックイベントが登録されていないように思われます。

なので、ダイアログ表示のクリックイベント登録は、click()ではなく

javascript

1$(document).on('click', '.showdialog', function () { 2 $('#showDialogDef').dialog('open'); 3});

というように将来追加される要素にも対応するようにするのはいかがでしょうか?

投稿2015/11/16 14:49

編集2015/11/25 02:59
blackonyx

総合スコア354

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ssyk

2015/12/24 05:22

返信が遅れてしまい大変申し訳ございません(><)ご教示頂いた内容で実現したいことが叶いました!本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問