jQuery / Mapbox多数据过滤器问题

时间:2015-06-01 02:59:26

标签: javascript jquery leaflet mapbox

我有一个用Mapbox构建的地图,它以GeoJSON为基础。我尝试按两个标准过滤标记:类别(多个真/假属性)和年份。我希望这两个过滤器同时工作,而不是互相取消,但我在组合时会卡住。

每个过滤器都独立工作 - 这就是我今年所拥有的:

$('.year a').on("click", function() {
    var year = $(this).data('filter');
    $(this).addClass('active').siblings().removeClass('active');
    featureLayer.setFilter(function(f) {
        return (year === 'all' || f.properties.Year === year);
    });
    return false;
}); 

这就是我对类别的看法:

$('.category a').on("click", function() {
    var category = $(this).data('filter');
    $(this).addClass('active').siblings().removeClass('active');
    featureLayer.setFilter(function(f) {
        return ((category === 'all') ? true : f.properties[category] === true);
    });
    return false;
});

这就是我将它们结合起来的方式,但我知道我做错了什么。

$('.category a, .year a').on("click", function() {
    var category = $(this).data('filter');
    var year = $(this).data('filter');
    $(this).addClass('active').siblings().removeClass('active');
    featureLayer.setFilter(function(f) {
        return ((category === 'all') ? true : f.properties[category] === true) &&
        (year === 'all' || f.properties.Year === year);
    });
    return false;
});

我想我错过了区分两个过滤器搜索的步骤,但我对jQuery不太熟悉,所以我不确定我需要做什么。具体来说,我认为我错过了类别var与.category a相关联的部分,而年份var与.year a相关联。

任何指向正确方向的人都会非常感激。谢谢!

2 个答案:

答案 0 :(得分:2)

suoz,

您的问题可能是您将选择器定位为绑定click事件的方式。正确的方法是:

$('.category a, .year a').on('click', function() { ... });

你没有说过这个问题,但我认为这可能是问题或其中之一。

答案 1 :(得分:1)

您目前正在将php-mbstringyear设置为相同的值。尝试直接定位元素,而不是使用calendar来避免这个问题。

this