2013-03-20 26 views
1

對於MVC應用程序click事件我的工作,我有一個可以填充一些子視圖像這樣一個觀點:使用上下文綁定到一個類

一些景觀環

@model SuperFoo 

<!-- snip unimportant details... -> 

@foreach(var current in Model.Items) 
{ 
    @Html.Partial('_Item', current); 
} 

<!-- ...SNIP more useless details... --> 

<script> 
$(document).ready(function() { 
    $('.add-item').click(function() { 
     // Make some AJAX call to do something. 
    }); 
}); 
</script> 

單個項目部分

@model Foo 

<div class='some-styling'> 
    @Html.HiddenFor(m => m.Name) 
    @Html.HiddenFor(m => m.PropA) 
    @Html.HiddenFor(m => m.PropN) 

    <input type='text' value='' /> 
    <a href='javascript:;' class='no-line add-item'>Add To Cart</a> 
</div> 

我想弄清楚兩件事情:

A)如何確保只有特定的按鈕,我點擊了它的觸發事件,

B)我如何使用特定項目獲得特定信息?如果您注意到,我的項目級別視圖中有一個可編輯的輸入字段。觸發點擊後,由此產生的AJAX呼叫需要使用該文本框中的值(這是簡單的部分,$('selector').val()

我只使用jQuery和MVC3。問題(可能是一個愚蠢的,但我們會看到):我的個人添加項目鏈接如何使用渲染它們的部分的上下文來操作?

+0

您的項目使用的編輯器模板而不是諧音可能會更有意義,在這裏 – 2013-03-20 19:46:03

+0

無論哪種方式,我仍然需要對上下文進行操作。背景如何呈現的媒介*不應該*重要。 – 2013-03-20 19:47:08

回答

1

你一定要明白,後在頁面完全呈現不存在偏析等partial view它只是管理您的代碼,我還沒有完全掌握你的問題,但生病嘗試

回答一個

$('.add-item).click(function (e) { 
    e.preventDefault();// prevent the default behavior of the anchor 
    this; //is your friend, it will give you the DOM element which is clicked 
    $(this); // will give you the nicely wrapped jQuery object  
}); 

答到B

如何使用特定項目獲得特定信息?

不知道你是問在這裏,但如果你換一樣

<div class="item-wrap"> 
    <input type='text' value='10'/> 
    <a href=#' class='no-line add-item'>Add To Cart</a> 
</div> 

<div class="item-wrap"> 
    <input type='text' value='20'/> 
    <a href='#' class='no-line add-item'>Add To Cart</a> 
</div> 

然後單擊處理程序

$('.add-item).click(function() { 
     var $this = $(this); 
     var $val = $this.closest(':input').val(); 
     //will give you 20 or 30 depending upon which one you click 

     //or 
     var $$val = $this.closest('.item-wrap>:input').val(); 

     //you can write a variety of selectors which can vary in perf 

    });