jQuery .click()不会在使用.wrapInner()动态创建的链接上触发

时间:2010-09-09 23:59:01

标签: jquery dynamic triggers hyperlink

我遇到了这个剧本的问题,对于我的生活,我无法弄清楚它有什么问题。快速浏览我的内容:

HTML:

<ul>
    <li id="wildcard_1">
        <div>
            <a href="#">test</a>
        </div>
    </li>
</ul>
<a href="#" class="reset">reset</a>

jQuery:

// Main function
$("[id^=wildcard_]").children('div').children('a').click(function() {
    $(this).replaceWith($(this).text());
});

// Temporary reset function
$("a.reset").click(function() {
    $("[id^=wildcard_]").children('div').wrapInner('<a href="#"></a>');
});

“test”链接正常工作,因为它应该是第一次被点击 - 它被转换为纯文本)。为了不在这里粘贴大部分脚本,我创建了一个临时函数,它将包装div的内容,将“test”纯文本转换回链接。这就是它变得混乱的地方 - 第一个函数的.click()监听器将不再在这个动态创建的链接上触发,并且FireBug不会抛出任何错误或警告。

你也可以在JSfiddle上看到这个:http://jsfiddle.net/rWz69/

对此的任何帮助都将不胜感激!

1 个答案:

答案 0 :(得分:11)

您可以使用.live()处理程序,如下所示:

$(document).on("click", "[id^=wildcard_] > div > a" , function() {
  $(this).replaceWith($(this).text());
});

Here's your fiddle example updated/working with the above code:)