【问题标题】:Can someone walk me through this line谁能带我走过这条线
【发布时间】:2010-09-04 11:41:47
【问题描述】:
var types = {
  "Grocery": "gro",
  "Restaurant": "res",
  "Bar": "bar",
  "Pizza Delivery": "piz",
  "Quick Service": "qui",
  "Retail": "ret",
  "Salon": "sal"
}

$(".type_changer").attr("id", types[$(this).text()]);

我知道 type_changer 类的 id 正在更改为此数组的一部分,但我不明白 types[$(this).text()]

还有这一行

$(this).parents('.select-holder').find('.text').text($(this).text());

似乎几乎可以理解,但我对 .parents.find('.text').text($(this).text()); 感到困惑

【问题讨论】:

标签: javascript jquery syntax


【解决方案1】:

$(this).text() 获取当前元素的文本(在您的情况下,<li> 是循环的,除非您的标记已更改)。

然后,它使用该文本作为 types 对象上的键,例如,当您单击“杂货店”链接时,基本上是在执行 types["Grocery"]

在 JavaScript 中,您可以通过 types.Grocerytypes["Grocery"] 访问属性,该属性的值为 "gro"


最后一条语句采用相同的“Grocery”测试并将其设置为父元素中 class="text" 元素的文本。

【讨论】:

  • 但是那不是让所有.type_changer元素都有相同的id,也就是当前元素.text()的对应值吗?因为this 是在调用它的地方评估的,而不是在每个元素上评估:$(".type_changer").attr("id", types[$(this).text()]);
  • @aularon - 问题中缺少一些上下文,这发生在<li> 元素的循环内:)
  • 如果有人好奇如何在该循环之外执行此操作,那么它将是:$(".type_changer").attr("id", function() { return types[$(this).text()]; });
【解决方案2】:

$(this).text() 将获取当前 DOM 元素内的文本,并使用该文本在数组中查找对应的值(例如 types['Restaurant'])。

【讨论】:

    【解决方案3】:

    在每个具有 'type-changer' 类的元素上,将其 ID 更改为在 types 中映射到元素中文本的值,例如。

    <div class="type-changer">Salon</div>
    

    将被转换为

    <div class="type-changer" id="sal">Salon</div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 2011-09-02
      • 1970-01-01
      • 1970-01-01
      • 2014-01-10
      • 2020-10-15
      • 2015-03-13
      相关资源
      最近更新 更多