相关疑难解决方法(0)

如何为某些HTML标记存储任意数据

我正在制作一个由javascript提供一些交互的页面.仅作为示例:发送AJAX请求以获取文章内容然后在div中显示该数据的链接.显然在这个例子中,我需要每个链接来存储额外的信息:文章的ID.我一直在处理它的方式是将这些信息放在href链接中:

<a class="article" href="#5">
Run Code Online (Sandbox Code Playgroud)

然后我使用jQuery来查找a.article元素并附加相应的事件处理程序.(不要太在意这里的可用性或语义,这只是一个例子)

无论如何,这种方法有效,但它有点味道,根本不可扩展(如果click函数有多个参数会发生什么?如果其中一些参数是可选的,会怎样?)

显而易见的答案是在元素上使用属性.我的意思是,这就是他们的目的,对吗?(的种类).

<a articleid="5" href="link/for/non-js-users.html">
Run Code Online (Sandbox Code Playgroud)

在我最近的一个问题中,我问这个方法是否有效,结果是没有定义我自己的DTD(我没有),那么不,它是无效的或可靠的.一个常见的反应是将数据放入class属性中(虽然这可能是因为我选择不当的例子),但对我而言,这更令人闻趣.是的,它在技术上是有效的,但它不是一个很好的解决方案.

我过去使用的另一种方法是实际生成一些JS并将其插入到<script>标记的页面中,创建一个与该对象关联的结构.

var myData = {
    link0 : {
        articleId : 5,
        target : '#showMessage'
        // etc...
    },
    link1 : {
        articleId : 13
    }
};

<a href="..." id="link0">
Run Code Online (Sandbox Code Playgroud)

但这可能是维持对接的真正痛苦,而且通常只是非常混乱.

那么,为了解决这个问题,你如何为HTML标签存储任意信息?

html javascript

329
推荐指数
8
解决办法
21万
查看次数

自定义属性 - 是或不是?

最近我一直在阅读越来越多关于在HTML标签中使用自定义属性的人,主要是为了嵌入一些额外的数据用于javascript代码.

我希望收集一些关于是否使用自定义属性是一个好习惯的反馈,以及一些替代方案.

现在看来似乎真的可以简化既服务器端和客户端的代码,但它也不是W3C标准.

我们应该在我们的网络应用程序中使用自定义HTML属性吗?为什么或者为什么不?

对于那些认为自定义属性是好事的人:使用它们时要记住哪些事项?

对于那些认为自定义属性是坏事的人:你用什么方法来完成类似的事情?

更新: 我最感兴趣的是各种方法背后的推理,以及为什么一种方法比另一种更好的原因.我想我们都可以用4-5种不同的方式来完成同样的事情.(隐藏元素,内联脚本,额外类,从ids解析信息等).

更新2: 似乎HTML 5 data-属性功能在这里有很多支持(我倾向于同意,它看起来像一个可靠的选项).到目前为止,我还没有看到这个建议的反驳方式.使用这种方法是否有任何问题/陷阱?或者它只是对当前W3C规范的"无害"失效?

html javascript xhtml custom-attribute

254
推荐指数
5
解决办法
6万
查看次数

HTML标记上的非标准属性.好事?坏事?你的意见?

HTML(或者只是XHTML?)在标签上的非标准属性方面相对严格.如果它们不是规范的一部分,那么您的代码将被视为不符合规范.

然而,非标准属性对于将元数据传递给Javascript非常有用.例如,如果假设链接显示弹出窗口,则可以在属性中设置弹出窗口的名称:

<a href="#null" class="popup" title="See the Popup!" 
   popup_title="Title for My Popup">click me</a>
Run Code Online (Sandbox Code Playgroud)

或者,您可以将弹出窗口的标题存储在隐藏元素中,例如span:

<style>
    .popup .title { display: none; }
</style>
<a href="#null" title="See the Popup!" class="popup">
    click me
    <span class="title">Title for My Popup</span>
</a>
Run Code Online (Sandbox Code Playgroud)

然而,我应该是一个优选的方法.第一种方法更简洁,我猜测,并没有像搜索引擎和屏幕阅读器一样多.相反,第二种选择使得存储大量数据更容易,因此更加通用.它也符合标准.

我很好奇这个社区的想法是什么.你怎么处理这样的情况?第一种方法的简单性是否超过潜在的缺点(如果有的话)?

html javascript standards

92
推荐指数
3
解决办法
2万
查看次数

在cshtml razor视图中分离JavaScript

我是ASP.NET/MVC3的新手,我正试图弄清楚如何将我的JavaScript(包含C#)与HTML的其余部分分开.

如果我将它们放入.JS文件并使用脚本标记插入它们,那么它们的C#方面就会停止工作.在MVC 3 razor中分离包含C#代码的JavaScript代码的最佳方法是什么?

谢谢.

javascript c# asp.net asp.net-mvc-3

7
推荐指数
2
解决办法
1万
查看次数

如果匹配列表,jQuery隐藏元素,无论顺序如何

如果它们匹配wordList中的单词,我需要隐藏span元素.

HTML:

<span class="wordBank_Words">
     <span word="hello"></span>
     <span word="you"></span>
     <span word="hi"></span>
</span>        
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

wordList = ['hello', 'how', 'are', 'you'];

$('.wordBank_Words span').each(function (index, val) {
    if ($(this).attr('word').match(wordList)) {
        $(this).hide();
    }
});
Run Code Online (Sandbox Code Playgroud)

所以,如果做得正确,它应该隐藏'你好'和'你',但不是'你好'

如果我这样做match('hello'),这正确地隐藏了HTML元素列表中的'hello'范围.

但我需要循环遍历每个span元素wordBank_Words,并将它们与wordList中的每个单词进行比较,并且只有在匹配时才隐藏.无论顺序如何,都需要进行比较.

如何才能做到这一点?

javascript jquery

4
推荐指数
1
解决办法
72
查看次数

什么是更好的:数据还是attr?

什么是更好的?

var itemId=8;
$('#aaa').data('ItemId', itemId);
$('#aaa').attr('ItemId', itemId);
Run Code Online (Sandbox Code Playgroud)

数据还是attr?

jquery

1
推荐指数
1
解决办法
389
查看次数