【发布时间】: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:
是什么导致这些 id 返回 undefined?
需要明确的是,在更复杂的示例中,我正在做同样的事情,只是被其他功能挤满了。那里的某些东西导致我的 id 以未定义的形式返回。
随着我越来越多地清理代码以仅涉及解决这个问题所必需的内容,我将继续发布此小提琴的更新!
【问题讨论】:
-
您应该能够将您的“复杂”示例简化为重现您的问题的最简单的解决方案。这是调试代码的一种方法
-
问题是我正在尝试这样做,并且(经过 2 小时的调试尝试后)无法找到任何没有返回这些 id 的代码版本不明确的。疯狂的是,在开发工具中,很明显元素确实具有定义的值。
-
ID 可以正常返回,但是您在数组中查找内容时失败了。
-
我打算试错,但我还没有走那么远:) 在 js fiddle 中,id 似乎仍然没有输出那个 ID。虽然代码可能会在小提琴中出错,但看起来这些 id 仍然显示为未定义。
-
好吧,它们已经定义好了!只需将它们记录到控制台 -> jsfiddle.net/pQz3W/6,您就会看到 ID 出现,但数组查找失败。请注意,替换元素后,事件处理程序不起作用,因为它不是委托的。
标签: javascript jquery html arrays undefined