0

我正在学习 jQuery 并且遇到了before函数问题。我正在做的是我有一个表,其中包含一个类fish并使用detach它来删除它并将它放入一个数组中,这样当我点击一个按钮时它会将它恢复到原来的位置。这是我下面的内容。我试图完成的最终结果是将文本(Pan-Fried Halibut)放回表格中。非常感谢任何帮助

<table>
    <tr>
        <td>&nbsp;</td>
        <td class="fish">Pan-Fried Halibut</td>
        <td>&nbsp;</td>
    </tr>
</table>

这是 jQuery 分离函数:

$("input#btn1").click(function () {
    $f = $(".fish").detach();
});

尝试将文本放回:

$("input#btn2").click(function () { 
    $(".fish").first().before($f);  'This statement doesnt work; what am i doing wrong
});                            
4

3 回答 3

0

目前尚不清楚您要在这里做什么。

一个问题是,在你做完$(".fish").detach()类 fish 之后,没有任何元素会留在 DOM 树中。因此,稍后您什么都不做$(".fish")将被匹配,因此不会插入任何内容。

另一个问题是您似乎将两个click处理程序附加到同一个元素;两者都会在单击按钮时被调用,最终结果会是什么并不明显。

最后,如何$f从第一个事件处理程序传递到第二个?

如果你这样做,你会看到一些结果(可能不是你想要的):

$(function() {
    var $f; // so that it's accessible to both event handlers

    // bind two handlers to the click event, to be executed on alternating clicks
    $("input#btn1").toggle(function () {
        $f = $(".fish").detach();
    }, function() {
        // you need to find some appropriate selector here, $(".fish")
        // will match nothing because those elements have already been detached
        $(/*something*/).first().before($f);  
    });
});
于 2012-05-01T13:37:13.063 回答
0

$f当您尝试重新添加文本时,我认为变量仍然不在范围内。请尝试以下操作:

$("input#btn1").click(function(){
    var $f = $(".fish").first();
    $(".fish").before($f);
});
于 2012-05-01T13:39:27.273 回答
0

一旦你分离 .fish,它就不再存在了。所以你不能参考它并试图把它放回去。尝试通过提供不同的位置将其放回原处。试试看这个例子 - http://jsfiddle.net/mnNfH/

于 2012-05-01T13:44:23.237 回答