javascript - 如何查找数据类型而不是页面类型

标签 javascript jquery umbraco jquery-isotope

我正在使用同位素来过滤网页上的不同内容。现在我在 umbraco 中有一个展示页面,并且有两种数据类型,分别为 imagesvideos

在我使用同位素过滤内容的其他页面上,我使用页面类型来执行此操作:

$('#filterNews').click(function () {
    $('.isotope').isotope({ filter: '.NewsItem', layoutMode: 'masonry' });
    $('.newsfilters .btn').removeClass('active');
    $(this).addClass('active');
    return false;
});

但是,我需要修改上面的内容,以便它在页面上查找数据类型。我尝试过以下方法:

$('#filterNews').click(function () {
    $('.isotope').isotope({ filter: '@CurrentPage.Images', layoutMode: 'masonry' });
    $('.newsfilters .btn').removeClass('active');
    $(this).addClass('active');
    return false;
});

我收到以下错误:

Uncaught Error: Syntax error, unrecognized expression: @CurrentPage.Images

我什至尝试从 Umbraco 获取实际的内容类型,但出现了非法语法错误。

有没有一种方法可以修改我的 JavaScript,以便它查找我想要的正确数据类型,而不是页面类型?

最佳答案

此处出现的错误是由于 @CurrentPage.Images 是服务器在渲染页面时尝试运行的 razor 脚本所致。如果当前页面上的属性“Images”未定义,则此操作将失败(这就是您在此处看到的内容)。

您在这里所做的事情也并不是您真正认为自己在做的事情。同位素脚本是在客户端运行的 javascript,因此它不能按照您在此处编写的方式与 razor 服务器端脚本一起使用。

听起来同位素中的过滤器需要一个类名来过滤,这意味着您必须查看实际输出图像和视频的模板代码。如果没有看到您的模板,我无法真正告诉您它是哪一部分,除了它很可能是带有“foreach”或“for”循环的东西,写出您的图像和视频元素。在此循环中,您必须修改它以将“视频”或“图像”类添加到正在输出的相应元素中,然后您将能够在同位素的过滤器属性中使用“.video”和“.image” .

关于javascript - 如何查找数据类型而不是页面类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28502522/

相关文章:

c# - 采用 ASP .NET Core 的 headless (headless) Umbraco CMS

javascript - 存储电子表格中的数字时使用哪种日期类型和 "set type"

javascript - 使用 angular.js 在表中添加序列号

javascript - 如何在更改时提交多个下拉菜单

javascript - 如何将 jQuery 添加到 VuePress 文件中

c# - Simple Injector - 将接口(interface)的特定实现注入(inject)到特定 Controller

javascript - Angularjs 无限摘要循环与 ng-repeat 和过滤器

javascript - 我需要什么正则表达式来检查一些非拉丁字符?

javascript - 匹配标准和离群值输入的正则表达式

umbraco - 新 Umbraco 7 - 设置面板中没有管理链接