2010-03-16 47 views
1

对于JQuery和MVC以及所有Web开发都很新颖。 我现在试图做到这一点,并要求提供一些建议:使用参数在JQuery中建立链接的最佳方法

我基本上试图建立一个4输入元素和1输出的过滤器。

我有4个选择(下拉)元素在我的页面。只要其中一个被更改,我需要建立一个href并获得带有返回值的局部视图。

我的问题是现在如果我应该尝试在select元素中构建href,或者如果我可以在jquery中执行一次,并且不必重复代码。我怎么做到这一点?

+0

你能提供一个输入输出的例子吗?我们不能在脑海中想象你在屏幕上有什么东西..它肯定会让你的问题得到解答 – ant 2010-03-16 15:21:01

+0

对,对不起!我甚至没有时间更新,直到我实际上得到了很好的答案。下次我会提供更多的内容。 – MrW 2010-03-16 15:31:15

回答

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。

.... &还要注意:我不知道这是否是有效的jQuery! .parents('#FilterContainer')

+1

这是有效的,但$ .get($('#FilterContainer')...会让你更快。 – ajm 2010-03-16 16:56:21

+0

@ajm - 非常好的一点。以上是当你打字速度比你快思维! – DaveDev 2010-03-16 17:16:21

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存储为一个常量,将整个模块存储为模块等),但这是一个很好的起点。

+0

感谢您的提示! :)真的很感谢答案! :) – MrW 2010-03-16 15:52:31

相关问题