javascript - 如何关联两个 DOM 元素?

标签 javascript jquery html

我有这个简单的 HTML 结构:

<ul>
    <li> One <p> Foo is a fool. </p> </li>
    <li> Two <p> Bar is not Barbie. </p> </li>
    <li> Three <p> Baz likes bazookas. </p> </li>
</ul>

<div id="pane"></div> 

如您所见,有一个 UL 列表。每个 LI 项目都包含一个始终隐藏的段落。

我想做的是:
每当用户单击 LI 元素时,相应的 P 元素都应转移到 #pane DIV。然后,当用户再次点击同一个 LI 元素时,P 元素应该被转移回它原来的位置。

现场演示: http://jsfiddle.net/u5y6u/1/

这是我目前使用的 jQuery 代码:

var p;

$('li').toggle(function() {
    p = $(this).find('p').appendTo('#pane');
}, function() {
    p.appendTo(this);
});

当段落位于#pane DIV 内时,局部变量p 用于存储对段落的引用。这显然只适用于一个 LI 元素,因为如果用户单击一个 LI 元素,然后立即单击另一个 LI 元素,p 变量将被新的段落引用覆盖。

这就是我想做的:
每当将 P 元素传输到 #pane DIV 时,我想以某种方式将该 P 元素与最初包含它的 LI 元素相关联,以便在再次单击 LI 时,我知道我必须传输回哪个 P 元素。

我该怎么做?

最佳答案

好吧,一种方法是使用 each 语句为每个 p 赋予它自己的范围。 See fiddle

$('li').each(function(){
    var p = $(this).find('p');

    $(this).toggle(
        function() { p.appendTo('#pane'); },
        function() { p.appendTo(this); }
    );
});

关于javascript - 如何关联两个 DOM 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4980707/

相关文章:

javascript - 如何在aspx响应中设置$.post()函数的 'status'参数?

javascript - 如何将计数功能应用于页面上的多个值?

jquery - jqGrid 更改特定列标题的背景颜色

javascript - 如何动态增加JS中的div id

javascript - 使用 javascript 正则表达式查找第一个和最长的匹配项

javascript - 将多个对象聚合为一个数组并同步更改

javascript - 使用 jqplot 库时显示图表轴

jquery - 测试 jQuery UI 工具提示是否打开

javascript - Canvas 路径到底是什么,ctx.closePath()有什么用?

html - 如何在 html div 中创建垂直居中的 html 链接按钮