2016-11-29 131 views
0

我遇到了這個奇怪的問題,這讓我有點瘋狂。我有一個MVC 5項目,它有一個局部視圖,當點擊一個按鈕時它會作爲模態出現。問題是,我必須連續兩次單擊按鈕才能觸發部分視圖方法。顯然這是因爲我使用$(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'屬性。在第二次點擊中,因爲現在存在這些屬性,所以現在已經觸發了模式(但是您再次添加了一些有點沒有意義的屬性)。你需要給出更多關於你實際做什麼的背景,但是最初需要添加'data- *'屬性 –

+0

你是對的。我基本上是按照這樣的方式學習了一個教程。我將數據屬性添加到固定它的按鈕上。 Sill這很奇怪,爲什麼當我使用除$(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; 
    });  
});