代码之家  ›  专栏  ›  技术社区  ›  ClarkeyBoy

其他人如何看待使用“自定义”属性使事情变得更简单(在jQuery中)

  •  2
  • ClarkeyBoy  · 技术社区  · 14 年前

    我目前正在jquerying(如果有这样一个词)我的网站。我不擅长JavaScript,也不擅长jQuery。面向对象在JS中已经被我忽略了,但是我网站的其他部分都是面向对象的图书管理系统. 我注意到,根据我不久前对jQuery的一些经验,在为某一行加载页面时会有多困难——例如,您必须找出要提交的ID等等。

    就在最近,我试着用一些东西,比如:

    <li class="catalogueItem"><a pName='" & Product.Name & "' pID='" & Product.ID & "'>" & Product.Name & "</a></li>
    

    好的,所以这不完全一样-我添加了类似的东西作为一个文字控件,但我没有在屏幕上的代码,所以我只是写了一些类似的东西。

    不管怎样,我尝试了以下方法:

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

    根据我的发现,这应该很管用。所以我的问题如下: b) 其他人怎么看这种技术? c) 在其他人看来,尽管HTML不符合W3C等标准,但使用这种技术可以吗? d) 有人能给我指出一个更有效、更容易、甚至更困难、更复杂但被广泛接受的方法来做这类事情吗?

    非常感谢。

    理查德

    给鲁本斯的长音符。。。

    我不知道你是否做过什么VB.Net版但我找不到一种方法来创建服务器端脚本标记,然后说:

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

    我认为开发人员应该尽可能地遵守这些准则,所以我把脚本标签放在它们所属的地方。

    我建议的方法可以“在运行中”完成,脚本将被加载,无论是否需要它们(它们在母版页的head标签中指定)。

    我认为我建议的方法有很多优点,因为它更容易编码(根据我的经验),而且可以更快地编码。

    我刚想到的一件事。。。我在visualstudio中看到了一个叫做ScriptManager的东西。。。我想知道这是否和把剧本放在一个地方有关。。。也许是时候做些调查了。。。如果我想到任何其他的东西,或者学到任何关于这两种方法的东西(正反两方面都一样),我都会在这里发帖。

    理查德

    4 回复  |  直到 14 年前
        1
  •  3
  •   Nick Craver    14 年前

    data- attributes ,如下所示:

    <li class="catalogueItem"><a data-pName='" & Product.Name & "' data-pID='" & Product.ID & "'>" & Product.Name & "</a></li>
    

    在HTML5中 数据- 前缀属性用于 确切地 但不会对HTML4文档造成任何问题(尽管它们在技术上是无效的)。现在你可以这样访问它们:

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

    .data() look for them as a fallback 还有,像这样:

    $("li.catalogueItem").click(function() {
      $(this).html($(this).find("a").data("pID"));
    });
    
        2
  •  1
  •   Cory Gagliardi    14 年前

    所有的现代浏览器都不会抱怨这种使用无效的HTML。尽管如此,它仍然总是困扰着我。使用 相对 属性以在HTML中存储数据。我还经常把某物的id钉在 属性: <a id="product-384">My Product</a>

    看到了吗 http://docs.jquery.com/Data

        3
  •  1
  •   Rubens Mariuzzo Salakar    14 年前

    作为 最好用它 jQuery.data ( http://docs.jquery.com/Data

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

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

    对于实际的.NET代码,您将被迫为每个项目编写前面的示例。使用循环就可以了。

        4
  •  1
  •   Community CDub    7 年前

    作为 Nick 解释说,这是jQuery即将推出的特性,您应该坚持这一点,因为它也是有效的HTML5代码。

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

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

    我有这个规则,如果你是建设和应用,而不是一个 网站(将被广泛的和未知的受众使用),你可以有一个受控的环境(阅读你可以告诉应用程序用户应该使用什么浏览器),做任何你必须做的事情使你的应用程序更好,这对客户和客户都是更好的 开发/维护/更新。