代码之家  ›  专栏  ›  技术社区  ›  scottm

为什么我的跨度消失了?

  •  1
  • scottm  · 技术社区  · 14 年前

    我有一些这样的HTML设置:

    <div>
        <label for="amount"><a id="amount-help-icon" class="help icon-link" href="#"><span class="ui-icon ui-icon-help"></span></a> Amount:</label>
        <input id="amount" class="inputText" type="text" value="" maxlength="100" size="10" name="amount" />
        <span class="help">The amount for stuff</span>
    </div>
    

    我试图让jquery在单击帮助图标时显示一个对话框,因此我有:

    $("a.help").click(function () {
        $(this).closest("label").siblings(".help").dialog({ title: "Help" });
        return false;
    });
    

    第一次显示对话框很好,但是当我单击图标时,跨度会从DOM中消失。因此,如果再次单击图标,则不会发生任何情况(因为没有span.help可供查找)。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Samuel Cole    14 年前

    你可能想克隆这个跨度。

    $(this).closest("label").siblings(".help").clone().dialog({ title: "Help" });
    
        2
  •  1
  •   sje397    14 年前

    下面允许您多次重复使用对话框-但是 <span> 将立即取消模仿,而不是第一次点击。

    $("a.help").each(function(i, link) {
        var $this = $(this), 
            d = $this.closest("label").siblings(".help").dialog({ title: "Help", autoOpen: false });
        $this.data('dialog', d);
    });
    
    $("a.help").click(function () {
        $(this).data('dialog').dialog('open');
        return false;
    });​
    

    演示 here .