Jquery text为.appenTo之后的元素提供空值

Jquery text为.appenTo之后的元素提供空值,jquery,Jquery,我正在使用更改选择框 以下是一个例子: 我有一个按钮,当点击得到一个“a”标签下面的文本。我有两种类型的“a”。一个是页面加载代码的一部分,另一个是使用select box插件动态创建的 我可以从作为页面一部分的“a”标记中获取文本,但动态标记中的文本是空字符串。我可以在屏幕上看到文本,当我使用firebug输入时,文本就在那里 为什么$(this).next(“.menuItem”).text()不能与动态文本一起工作?我应该看到:14'-14.14欧元 //button to get te

我正在使用更改选择框

以下是一个例子:

我有一个按钮,当点击得到一个“a”标签下面的文本。我有两种类型的“a”。一个是页面加载代码的一部分,另一个是使用select box插件动态创建的

我可以从作为页面一部分的“a”标记中获取文本,但动态标记中的文本是空字符串。我可以在屏幕上看到文本,当我使用firebug输入时,文本就在那里

为什么
$(this).next(“.menuItem”).text()
不能与动态文本一起工作?我应该看到:14'-14.14欧元

 //button to get text
<a href="javascript:void(0)" class="addToCart cart"></a>

<div id="sbHolder_51608882" class="sbHolder" tabindex="1">
    <a id="sbToggle_51608882" href="#" class="sbToggle"></a>
    <a id="sbSelector_51608882" href="#" class="sbSelector menuItem">14' - €14.14</a>
         <ul id="sbOptions_51608882" class="sbOptions" style="display: none;">
              <li><a href="#1" rel="1">6' - €6.66</a></li>
              <li><a href="#2" rel="2">12' - €12.12</a></li>
              <li><a href="#3" rel="3" class="sbFocus">14' - €14.14</a></li>
         </ul>
</div>
//获取文本的按钮
这工作正常,是加载页面的一部分:

<a href="javascript:void(0)" class="addToCart cart"></a>
<span class="price menuItem">12' - €12.99</span>

12' - €12.99

您的期望不正确。获取紧邻的下一个元素(同级)。看看你的HTML,你会发现你的兄弟姐妹:

<a href="javascript:void(0)" class="addToCart cart"></a>
-显示
.menuItem
编辑
要解决两种不同的场景,可以应用一些逻辑。如果您总是有一个或另一个场景,那么这个特定的逻辑将起作用。当然,如果你有完全随机的不可预测的场景,这是行不通的

$(".addToCart").on("click", function() {
    var $menuItem = $(this).next(".menuItem");

    if($menuItem[0] === undefined){
        $menuItem = $(this).next().find(".menuItem");
    }
    alert($menuItem.text());
});​

-使用
.menuItem
查找立即下一个
或使用立即下一个的
.menuItem
查找孩子您的期望不正确。获取紧邻的下一个元素(同级)。看看你的HTML,你会发现你的兄弟姐妹:

<a href="javascript:void(0)" class="addToCart cart"></a>
-显示
.menuItem
编辑
要解决两种不同的场景,可以应用一些逻辑。如果您总是有一个或另一个场景,那么这个特定的逻辑将起作用。当然,如果你有完全随机的不可预测的场景,这是行不通的

$(".addToCart").on("click", function() {
    var $menuItem = $(this).next(".menuItem");

    if($menuItem[0] === undefined){
        $menuItem = $(this).next().find(".menuItem");
    }
    alert($menuItem.text());
});​

-使用
.menuItem
查找立即下一个,或使用立即下一个的
.menuItem
查找子项您的代码不显示标题中的
附录,也不显示单击上下文
$(此)
在中使用。您能否添加相关代码,因为访问动态元素时,单击事件的绑定方式会有很大的不同?您的第一个代码片段的结构与
不同。menuItem
不在文本链接旁边。从您给我们的内容很难判断。。。但也许需要再次调用动态选择来刷新其内容?@FrancoisWahl。。。确切地这可能是“This”的问题。要做的事情是记录目标元素的标识,以验证实际选择的内容。appenTo是插件的一部分,太多了,无法粘贴到此处。$(this)的上下文是$(“.addToCart”)。单击(function(){}您的代码不会显示标题中的
appendTo
,也不会显示单击上下文
$(this)
在中使用。您可以添加相关代码吗?因为访问动态元素时,单击事件的绑定方式会有很大的不同。您的第一个代码段的结构与
不同。menuItem
不在文本链接旁边。从您给我们的内容很难判断……但可能需要再次调用dynamic select以重新引用h其内容?@FrancoisWahl;…正是。这可能是“This”的问题。要做的事情是记录目标元素的标识,以验证实际选择的内容。appenTo是插件的一部分,太多了,无法粘贴到此处。$(This)的上下文是$(“.addToCart”)。单击(function(){}谢谢,是的,我可以确定我在dom中的导航不正确。我的问题是,上面的解决方案会破坏我在屏幕上的第二种类型的文本。我也没有包括它,但插件隐藏了选择集以显示无。我现在看到,即使设置为显示无,也会产生干扰。我已经创建了完整的JSFIDLE ba你可以看到我已经包括了选择和第二种类型的按钮。@KeithPower:现在你甚至在第一个单击的锚之后添加了一个选择。如果你有完全随机的标记,其中你的
.menuItem
可能在任何兄弟姐妹或任何子代中,你将不得不
.each()
在整个DOM中跟随单击的对象。这可能有效,但效率不高。为此,我可以确定,在DOM中的导航不正确。上述解决方案的问题是,它会破坏屏幕上的第二种文本类型。我也没有包括它,但插件会将选择集隐藏为显示无。即使设置为显示无,我现在看到的也会产生干扰。我已经基于您的创建了一个完整的JSFIDLE。您可以看到我已经包含了select和第二种类型的按钮。@KeithPower:现在您甚至在第一个单击的锚定之后添加了select。如果您的
.menuItem
中包含了完全随机的标记在任何兄弟姐妹或任何子对象中,您都必须在整个DOM中跟随单击的对象执行
。each()
。这可能会起作用,但效率不高。