其他人怎么想使用“自定义”属性来简化事务(在jQuery中)

我目前正在jQuerifying(如果有这样的话)我的网站。 我根本不擅长JavaScript,也不擅长jQuery。 面向对象在JS中传递给我,但我的网站的其余部分是面向对象的VB.net。 我注意到,从一段时间以来我对jQuery的一些经验,加载特定行的页面有多么困难 – 你必须以某种方式找出什么ID,例如,提交和类似的东西。

就在最近我尝试使用类似的东西:

  • " & Product.Name & "
  • 好吧所以这不完全相同 – 我添加了类似这样的文字控件,但我现在没有屏幕上的代码所以我只是写了类似的东西。

    无论如何,我然后尝试了以下:

     $("li.catalogueItem").click(function() { $(this).html($(this).find("a").attr("pID")); }); 

    根据我的发现,这应该可以正常工作。 所以我的问题如下:a)使用这种技术有问题吗? b)其他人对这种技术的看法是什么? c)在其他人的意见中使用这种技术是否可以,尽管HTML不符合W3C等? d)任何人都可以指向一个更有效或更容易,或者甚至更难/复杂但被广泛接受的方式来做这种事情吗?

    请记住,产品可能具有许多属性,我可以在管理前端使用它来通过拖放界面重新排列产品。

    提前谢谢了。

    问候,

    理查德

    相当长的注意到鲁本斯……

    我不知道你之前是否曾经做过任何VB.Net,但我找不到创建服务器端脚本标签的方法,然后说出如下内容:

     ScriptTag.Controls.add(New LiteralControl("$('#" & MyDiv.clientID.toString & "').data('ProductName', '" & Product.Name & "');")) 

    我已经尝试过并尝试过,但我能找到的唯一方法是将脚本存储在服务器端(可能在数组中),然后覆盖页面呈现事件(此时所有脚本都将添加到数组中)到在一个脚本标签中输出这些,或者更可怕的是,使head标签在服务器上运行,然后每次我需要输出另一个脚本时添加脚本标签。 无论哪种方式实现这些技术都会导致花费很长时间来实现这样的方法或者带有许多脚本标记的可怕的长头标记。

    我认为开发人员应尽可能遵守指南 – 因此我将脚本标记保留在它们所属的头部。

    我建议的方式可以“动态”完成 – 无论是否需要脚本都会被加载(它们在母版页的head标签中指定)。

    我以我建议的方式看待它的方式有更多的优点,因为它更容易编码(根据我的经验)并且可以更快地编码。

    有一件事发生在我身上……我在Visual Studio中看到过一些叫做ScriptManager的东西……我想知道这是否与将脚本保存在一个地方有关…也许是时候做一些了如果我想到其他任何事情,或者在任何一种方法(优点和缺点等)中学习任何其他内容,我会回复此处。

    理查德

    如果您要使用自定义属性,我会说使用data-属性 ,如下所示:

     
  • " & Product.Name & "
  • 在HTML5 data-前缀属性正是出于这个目的……但不会对HTML4文档造成任何问题(尽管它们在技术上无效)。 现在您可以像这样访问它们:

     $("li.catalogueItem").click(function() { $(this).html($(this).find("a").attr("data-pID")); }); 

    在即将推出的jQuery 1.5中, .data()也会将它们视为后备 ,如下所示:

     $("li.catalogueItem").click(function() { $(this).html($(this).find("a").data("pID")); }); 

    所有现代浏览器都不会抱怨使用无效HTML。 那就是说,它总是困扰着我。 看到使用rel属性在HTML中存储数据是很常见的。 我还经常使用id属性来识别某些内容: My Product

    一旦你进入JavaScript / jQuery领域,最好使用jQuery的data()方法。 请参见http://docs.jquery.com/Data

    正如Cory Gagliardi所写,最好使用jQuery.datahttp://docs.jquery.com/Data )在任何HTML节点中存储和读取数据。

    使用jQuery.data方法将为您添加一些额外的代码(请参阅工作)。 主要思想是您可以使用密钥将JavaScript Object存储在HTML中。

    例:

     $('li.catalogueItem item-0').data('item', {id:0, name:'My Item', desc:'...'}); 

    对于您的实际.NET代码,您将被推送为每个项目编写前面的示例。 使用循环可以完成这项工作。

    正如尼克解释的那样,这是jQuery即将发布的function,你应该坚持下去,因为它也是有效的HTML5代码。

    但我知道你要求的是个人经验,而不是技术上的理由。

    所以根据我的经验,尽可能多地使用它们。

    HTML从第一天开始就被打破了,它缺少很多有用的function,但好消息是你可以在不破坏function的情况下解决大部分问题。

    我有这个规则,如果你正在构建和应用,而不是一个公共站点(将被广泛和未知的观众使用),你可以拥有一个受控制的环境(阅读你可以告诉应用程序用户他们应该使用什么浏览器),尽你所能使你的应用程序更好,这对客户更好,更好地开发/维护/更新。

    规格总是改变,它们总是引入已经使用的function;)