0

我有 8 个用户可以选择的搜索过滤器。当用户单击过滤器时,它会打开此过滤器的选项。当用户点击退出时,该功能hideFilterSearch()被触发。我对变量 formData 的范围的理解有问题(见下文)。

$(document).ready(function() {
    var formData = $("form").serialize();
});

function hideFilterSearch() {
    console.log(formData);
    $(".filters").hide();
    newFormData = $("form").serialize();
    if (formData != newFormData) {
        //newFormData is sent with ajax and search results are updates
    }
    formData = $("form").serialize();  
}

//show, hide filter changer
$('body').click(function(event) {
    if (!$(event.target).closest('.filter').length) {        
        hideFilterChanger();
    };
});

在这种情况下,控制台日志给了我空字符串。我也尝试formData作为参数发送()hideFilterSearch(formData),但问题是formData不会更新。我不确定传递formData给函数的正确方法是什么,但是当它被改变时仍然会更新它在函数内部的值。

4

2 回答 2

1

使用全局变量。作为局部范围内的formData变量,您不能在另一个函数中访问它。

将您的代码更改为以下内容

window.formData = $("form").serialize();
于 2012-10-24T07:46:12.597 回答
0

函数可以返回值。传递 formData 并从函数返回更新的数据。然后您可以在 hideFilterChanged 中分配它。

$(document).ready(function(){
 var formData = $("form").serialize();

 function hideFilterSearch(formData){
     console.log(formData);
     $(".filters").hide();
     newFormData = $("form").serialize();
     if(formData!=newFormData){
       //newFormData is sent with ajax and search results are updates
     }
     return $("form").serialize();  
   }

   //show, hide filter changer
   $('body').click(function(event) {
     if (!$(event.target).closest('.filter').length) {        
         formData = hideFilterChanger(formData);
     };
   });
});
于 2012-10-24T07:47:41.480 回答