【问题标题】:Variable of Javascript and jQueryJavascript 和 jQuery 的变量
【发布时间】:2013-02-08 22:05:09
【问题描述】:

请在以下 3 行代码中解释head var 发生了什么(以及如何使用),而不是通过它(我的理解有限)。

<script type="text/javascript">
  var head = $("thead#tHead1").clone().removeAttr("class");
  $(head).find("#hRow2").remove();
  head = $(head).wrap("<thead>").parent().html();

编辑 在第 1 行设置 head = 之后,在第 2 行代码使用 $(head) 然后将 head 分配给另一个值有什么意义?

查看我所学知识的答案。

【问题讨论】:

  • 是的。它将引用第二行中克隆的 head 元素。第三行中的$(head) 相同。
  • @nhahtdh 请检查编辑。 “使用”问题不清楚。
  • 那是一些糟糕的代码。 &lt;thead&gt; 元素不属于其他 &lt;thead&gt; 元素。

标签: javascript jquery syntax


【解决方案1】:
// Find an element, make a copy of it, and remove it's class
var head = $("thead#tHead1").clone().removeAttr("class");

// Within the cloned element (not on the DOM yet),
// Find an element within and then remove that found element.
$(head).find("#hRow2").remove();

// Wrap the cloned element in another element, giving it a parent.
// Traverse to that parent and return it's html content
head = $(head).wrap("<thead>").parent().html();

注意这里不需要$(head)。那可以只是head。您不需要将元素转换为 jQuery 包装对象,因为它应该已经是一个。


另外,这是一个糟糕的代码。做它应该做的任何事情都是对 DOM 的一个笨拙的黑客攻击。相反,您应该使用某种模板引擎根据一些输入数据根据需要生成新的 DOM 片段。

【讨论】:

  • 不错的答案。这就是我一直在寻找的。​​span>
  • Alex,你会发现底部 2 行代码(已编辑)是正确的编写方式吗?
  • 那会稍微改进代码,是的。但老实说,我认为应该退后一步,重新评估这里的方法。但这是一个完全不同的问题。
  • 对您的“笨拙的黑客”建议。公认。我正在尝试补偿浏览器中的表格 - 不处理“打印时”的分页符。而且,无需重新加载页面。有更好的主意吗?
【解决方案2】:

我会引导你完成这些线路:

  1. 一个打开的&lt;script&gt; 标签,顺便说一下,它不需要type 属性。

  2. 找到id为tHead1的&lt;thead&gt;元素,复制包含子节点的元素,并从新元素中删除class属性,然后将新元素分配给head变量.

  3. 删除我们之前创建的元素内部的 id 为 hRow2 的元素。

  4. 将我们之前创建的元素包装在thead 元素中,并重新分配head 变量以等于该'' 元素的innerHTML。

【讨论】:

    【解决方案3】:

    从 cmets 和进一步的研究中,我收集到这可以更好地写成:

    var head = $("#tHead1").clone().removeAttr("class");   // clean & clone the head  
    head.find("#hRow2").remove();                          // remove 2nd row
    head = head[0].outerHTML;                              // get 'only' the desired html
    

    要回答我自己的问题,(我不确定术语)在这种情况下最后一个head = 是必要的,而不是显示[object Object]。它不是一个对象,而是分配所需的 HTML(标题行),以便稍后在代码中使用几行。 console.log(head) 透露了这一课。我也不确定为什么不能将第 1 行和第 2 行链接起来,所以我可以做到这一点。

    这个练习的更高目的是在打印之前将一个大表分成单独的(45 行)表,在随后的页面上只有 3 个标题行中的 2 个可见,并且不联系服务器或重新加载页面。我的方法是在第 n 行添加一个页尾类,完成上述操作,然后在该行之后 appendTo() 新表和标题。

    【讨论】:

      猜你喜欢
      • 2014-09-05
      • 1970-01-01
      • 1970-01-01
      • 2011-10-23
      • 1970-01-01
      • 1970-01-01
      • 2011-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多