2016-11-29 15 views
0

私は少し狂っているこの奇妙な問題に遭遇しています。私はボタンをクリックするとモーダルとして表示される部分的なビューを持つMVC 5プロジェクトがあります。問題は、部分ビューメソッドをトリガするためにボタンを2回続けてクリックする必要があることです。明らかに、これはイベントを発生させるセレクタとして$(document)を使用した場合に発生します。そうでなければうまくいく。私はボタンを動的に生成しているので、セレクタとして$(document)を使用しなければならず、他のセレクタを使用してもクリックハンドラは登録されません。 この私のモーダルコンテナれる:部分表示モーダルがダブルクリックでレンダリングされます

<div id="modal-container" class="modal fade" 
    tabindex="-1" role="dialog"> 
    <div class="modal-content"> 
    </div> 
</div> 

ここでイベントを発射ボタンのHTMLです:

<a class="modal-link" href="/Customer/EditGroup/@item.Customer_Group_Code"> 
     <img src="~/images/editIcon.png" alt="Edit" /> 
    </a> 

私はこのようなルックスを呼び出していjQueryの方法:

$(document).on('click', '.modal-link', function (e) { 
    e.preventDefault(); 
    $(this).attr('data-target', '#modal-container'); 
    $(this).attr('data-toggle', 'modal'); 

}); 

はとビューのコントローラーメソッドは次のとおりです。

public ActionResult EditGroup(int id) 
    { 
     ViewBag.id = id; 
     return PartialView("_EditGroup"); 
    } 
+0

これは '$(document)'とは関係ありません。最初のクリックでは、 'data-target'と' data-toggle'属性を追加します。 2回目のクリックでは、これらの属性が現在存在するため、モーダルが現在起動されます(ただし、属性をもう一度追加すると少し無意味です)。あなたは実際に何をしているかについてより多くの文脈を与える必要がありますが、最初に 'data- *'属性を追加する必要があります。 –

+0

あなたは正しいです。私は基本的にそれを持っていたチュートリアルに従っていた。私はそれを固定したボタンにデータ属性を追加しました。私が$(document)以外の別のセレクタを使用していたときに、なぜモーダルがポップアップしていたのか不思議です。 – psyoptica

答えて

0

あなたのコマンドに:return false;を加えてください。これは修正を行う必要があります。

$(document).ready(function() {  
    $(document).on('click', '.modal-link', function (e) { 
     e.preventDefault(); 
     $(this).attr('data-target', '#modal-container'); 
     $(this).attr('data-toggle', 'modal'); 
     return false; 
    });  
}); 
関連する問題