【问题标题】:Jquery - $(this) id from selector groupJquery - 来自选择器组的 $(this) id
【发布时间】:2013-12-04 21:17:17
【问题描述】:

所以 我已经定义了一个简单的列表和一个输出

<div class="item-list">
    <p id="One">First Item</p>
    <p id="Two">Second Item</p>
    <p id="Three">Third Item</p>
</div>

<div class="box">Add Stuff in Here!</div>

我写了这个脚本

$(".item-list > p").click(function(){
    var thisId = (this.id);
    $(".box").append('<p>' + thisId + '</p>');  
});

我想要 每个项目,在点击时,将其 id 作为文本附加到 .box 元素中

就像这样

<div class="box>One</div>

这行得通 就像你期望的那样。 JS Fiddle of the simplified Working Example.

但在我更复杂的例子中: 被选元素的id

(this.id)

返回...

呃.. 不明确的。

这是更复杂版本的 JS Fiddle:

http://jsfiddle.net/pQz3W/4/

是什么导致这些 id 返回 undefined?

需要明确的是,在更复杂的示例中,我正在做同样的事情,只是被其他功能挤满了。那里的某些东西导致我的 id 以未定义的形式返回。

随着我越来越多地清理代码以仅涉及解决这个问题所必需的内容,我将继续发布此小提琴的更新!

【问题讨论】:

  • 您应该能够将您的“复杂”示例简化为重现您的问题的最简单的解决方案。这是调试代码的一种方法
  • 问题是我正在尝试这样做,并且(经过 2 小时的调试尝试后)无法找到任何没有返回这些 id 的代码版本不明确的。疯狂的是,在开发工具中,很明显元素确实具有定义的值。
  • ID 可以正常返回,但是您在数组中查找内容时失败了。
  • 我打算试错,但我还没有走那么远:) 在 js fiddle 中,id 似乎仍然没有输出那个 ID。虽然代码可能会在小提琴中出错,但看起来这些 id 仍然显示为未定义。
  • 好吧,它们已经定义好了!只需将它们记录到控制台 -> jsfiddle.net/pQz3W/6,您就会看到 ID 出现,但数组查找失败。请注意,替换元素后,事件处理程序不起作用,因为它不是委托的。

标签: javascript jquery html arrays undefined


【解决方案1】:

你有一个数组

ServiceArray = [
    [
        ["SplashPage", "Splash Page", "hey!"],
        ["GamingWebsite", "Gaming Website", "yo!"],
        ["BasicWebsite", "Basic Website", "hi!"],
        ["AdvancedWebsite", "Advanced Website", "ooh!"],
        ["FlexWebsite", "Flex Website", "ahh!"],
        ......etc

并且您有 ID,您正尝试像这样在该数组中查找该 ID

var thisId = this.id;
var outputList = ServiceArray[0][thisId][2];

但是 javascript 中没有关联数组,并且您要查找的键不存在。您需要使用具有与您要查找的内容实际匹配的键和值的对象来重建该数组。

【讨论】:

  • 同意。 thisId 正确具有元素的 ID。这是以下行不起作用:我收到Uncaught TypeError: Cannot read property '2' of undefined 因为你没有一个名为Splash/Gaming/etckey
  • @Shai - 这与我遇到的相同错误,再调试一下,数组与用于查找的代码相去甚远,因为数组甚至没有命名键,只有索引。
  • 没错。可能希望ServiceArray[0] 成为一个对象,以Splash/Gaming/etc 作为键。然后ServiceArray[0][thisId][2] 将保持不变。但是,您的站点代码的其余部分可能需要更改。其他选择是在ServiceArray[0][0] 中添加第四个值Splash,并在每次悬停时循环查找正确的数组.....
  • 是的,这就是问题所在。多谢你们!对不起那个凌乱的脚本:P
  • 等待等待。坚持
【解决方案2】:

试试这个:var thisId = $(this).attr("id");

【讨论】:

    猜你喜欢
    • 2013-01-19
    • 2013-10-18
    • 2022-08-18
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 2011-03-03
    • 2013-02-02
    相关资源
    最近更新 更多