私は MVC と jQuery を初めて使用し、jQuery タブ パネルに新しいタブを追加する際に問題があります。
2 つの部分ビューを含む ASP.NET MVC3 ビューがあります。1 つ目は検索フォームで、2 つ目は検索結果を表示します。
ここで、検索結果をタブ パネルのタブに配置する必要があります。このプロジェクトの後半では、次のように動作するはずです。ユーザーがいくつかのキーワードを検索すると、新しい検索ごとに新しいタブがタブ パネルに追加されます。このようにして、ユーザーは以前の検索に切り替えることができるはずです。しかし、私はまだここまでではありません。
私が最初に試みたのは、検索結果を含む単一のタブを持つ静的タブ パネルをページに追加することでした。これはかなり簡単で、問題はありませんでした。次に試みたのは、ユーザーが検索フォームの送信ボタンをクリックするたびに、静的コンテンツ (「Hello World」) を含む新しいタブをタブ パネルに追加することでした。しかし、これは実際には機能しません:
タブパネルに新しいタブが追加されていることがわかります。ただし、1 秒未満です。検索結果が表示されるとすぐに、新しいタブが消えます。部分ビューをレンダリングすると、jQuery/JavaScript による変更が上書きされるようです。
これはビューです (_SearchInput
は検索フォーム_SearchResults
の部分ビュー、 は検索結果の表示に使用される部分ビューです):
<div class="roundedBorder">
@Html.Partial("_SearchInput")
</div>
<div id="tabs" style="margin-top:7px;">
<ul>
<li><a href="#fragment-1" id="tab1Link">Test 1</a></li>
</ul>
<div id="contentcontainer">
<div id="fragment-1">@Html.Partial("_SearchResults")</div>
</div>
</div>
_SearchInput
ドキュメントの準備ができたらタブを追加し、フォームの送信ボタンがクリックされたときに呼び出しますsearchClick
。
<script>
$(document).ready(function () {
/* show tabs */
$('#tabs').tabs();
});
function searchClick() {
var keyword = $("#searchTextInput").val().trim();
if (keyword == null || keyword == "") {
return false;
}
var title = keyword.substring(0, 10);
$('#contentcontainer').append("<div id='fragment-2'>hello world</div>");
$('#tabs').tabs("add", "#fragment-2", title);
}
</script>