2017-02-13 139 views
0

我有一個基本上是一個小部件的部分視圖。我想在同一頁面上有1和'n'之間。MVC部分視圖和Javascript

我遇到的問題是我無法獲得JavaScript執行每一個。

例如

Index.cshtml

<div> 
    @Html.Partial("_ButtonPartialView") 
    <br/> 
    <br /> 
    @Html.Partial("_ButtonPartialView") 
</div> 

_ButtonPartialView.cshtml

<h2>ButtonView</h2> 
<button id="foo"> 
    on 
</button> 

BundleConfig.cs

bundles.Add(new ScriptBundle("~/bundles/test").Include(
         "~/Scripts/test.js")); 

Layout.cshtml

@Scripts.Render("~/bundles/test") 

test.js

$(document).ready(function() { 
    $('#foo').click (function() { 
     if ($('#foo').html() === 'on') { 
      $('#foo').html('off'); 
     } else { 
      $('#foo').html("on"); 
     } 
    }); 
}); 

我的問題是,當我點擊它打開和關閉精細之間進行切換的第一個按鈕。當我點擊第二個按鈕時,沒有任何反應!

我更大的問題,如果我能得到這個工作是。我顯然希望所有的部分視圖都是獨立的。例如我不想點擊一個按鈕,他們都會觸發。他們都將被傳遞給一個模型,我需要編寫JS來處理那些模型並顯示信息。

所以每個小部件都需要獨立。

感謝

+5

第一件事ID是唯一的,使用類,而不是用於按鈕 – brykneval

回答

1

正如在評論中提到的,id必須是唯一的。如果你想通過id引用按鈕,你需要生成唯一的ID。

更簡潔的方法是使用類選擇器而不是$(this)來引用觸發事件的按鈕實例。

$(".foo").on("click", function(e) { 
    var btn = $(this); 
    var state = btn.html(); 
    ... 
}); 
1

要觸發腳本上動態添加的內容,您需要將事件綁定到文檔。點擊事件改變

$(document).on('click', '#foo', function() { 
    if ($('#foo').html() === 'on') { 
     $('#foo').html('off'); 
    } else { 
     $('#foo').html("on"); 
    } 
}); 

然後在對方的回答中提到改變選擇是部分特定