对所有人来说,JQuery和MVC以及webdevelopment都是新手。 我现在正在努力实现这一目标,并要求提出一些建议:
我基本上是在尝试构建一个包含4个输入元素和1个输出的过滤器。
我的页面中有4个选择(下拉)元素。一旦其中一个被更改,我需要构建一个href并获得带有返回值的局部视图。
现在我的问题是,如果我应该尝试在select元素中构建href,或者如果我可以在jquery中执行一次,并且不必重复代码。我该如何做到这一点?
答案 0 :(得分:1)
你可以用jQuery以你想要的模块方式做一次。类似的东西:
$('select').bind('change',function(e){
// Our select changed. Send it's selected option's value onwards...
getView(this.options[this.selectedIndex].value);
});
然后,在其他地方:
function getView(url){
$.ajax( url : '/your/url/' + url, success : function(){ }, error : function(){ });
}
基本上,将URL片段存储为下拉列表中选项的值。观察更改事件并触发相应的请求。您可以根据需要将其设置为模块化(我将URL存储为常量,将整个事件作为模块等),但这是一个很好的起点。
答案 1 :(得分:1)
每个下拉列表应为class="FilterSelect"
或类似
当它们中的任何一个发生变化时,它将触发对需要在所有选择可用的上下文中指定的URL的请求。
以下伪代码应该提出一个想法:
$('.FilterSelect').change(function()
{
var data = {} // you need to get the selected items of each dropdown somehow
$.get($(this).parents('#FilterContainer').attr('href'), data, function(response)
{
$('#ContentArea').html(response);
}
});
请注意:您不应该在jQuery中构建URL,因为客户端逻辑不应该关注构建与服务器端路由相对应的URL所需的规则。
....&还要注意:我不知道这是否是有效的jQuery! .parents('#FilterContainer')