我想在JavaScript中使用post的标记。为了得到这些标签,我最初使用的是如下内容:
<article class="post" data-tags="{TagsAsClasses}">
直到我需要使用特殊字符,比如
|
,它变成了带有这个属性的_
,并且给了我一个错误的标记。所以现在我需要做一些类似的事情(使用
{block:Tags}
):<article class="post" data-tags="{block:HasTags}{block:Tags}{Tag}{/block:Tags}{/block:HasTags}">
但如果
{Tag}
中有双引号,我就预见到了问题。是否有任何方法可以保留data tags属性并仍然使用
{block:Tags}
获取真正的标记?我已经提出了一个解决方案,包括添加和阅读一堆标记,但我只是不太喜欢它。
<div class="postHiddenTags" style="display:none;">
{block:HasTags}
{block:Tags}<div data-tag={JSTag} data-tagURL={JSTagURL}></div>{/block:Tags}
{/block:HasTags}
</div>
最佳答案
如果需要用JavaScript获取标记,可以从一开始就在<script>
标记中定义它们。在主题HTML中:
<script>
var tags = {};
{block:Posts}
{block:HasTags}
tags[{JSPostID}] = [
{block:Tags}
{
"tag": {JSTag},
"tagURL": {JSTagURL},
},
{/block:Tags}
];
{/block:HasTags}
{/block:Posts}
</script>
您有一个全局JavaScript字典,从post的ID到它的标记列表(和标记url)。“JS”前缀用于输出字符串wrapped in quotes。
在每个post元素中,为post ID添加一个属性:
{block:Posts}
<article data-id="{PostID}" class="post"></article>
{/block:Posts}
您可以在模板中多次使用
{block:Posts}
,尽管the theme documentation没有提到这一点。每当需要post的标记时,从其DOM元素中获取post ID,然后在标记字典中查找该ID。这样就不必担心特殊字符的转义/不转义。
关于html - Tumblr主题获取JavaScript中帖子的标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32301259/