0

我是 Javascript/jQuery 的半新手,所以如果我遗漏了一些基本的东西,请提前道歉。我有一个函数,只要用户输入具有特定类的元素,就会触发该函数。

     $('.relevantClass').keyup(function(){
     //code...
     });

现在这个函数最终可能会根据具体情况创建大量新的 HTML,包括relevantClass通过该.append()方法的新实例。

     var newHTML = <div class='relevantclass'>Content...</div>;
     $('#wrapper').append(newHtml);

但是,当用户键入新创建的relevantClasses. 我检查了新创建的 Html,它具有正确的类标签和相关类的旧实例。

我猜这与.append();弄乱 DOM 有关,我需要以某种方式“刷新”选择器并让它做 jQuery 的事情来研究 DOM 以找到新的类。关于如何做到这一点的任何想法?有一些我找不到的 jQuery 方法吗?

4

3 回答 3

4

您必须使用on()附加对动态内容起作用的事件:

var $parent = $("selector"); //the element you're appending .relevantClass to
$parent.on("keyup",".relevantClass",function(){
    //code...
});

请记住,要使用动态内容,您必须将事件附加到relevantClass页面加载时存在的最近的父级。

有些人使用body,但您应该习惯使用尽可能接近动态内容的父元素。这使得事件委托发生在较小的范围内。

更多信息在on() 这里

另外,我希望该newhtml变量用引号引起来。

于 2012-08-05T07:16:04.833 回答
0
$('.relevantClass').on('keyup', function(){
    //code...
});
于 2012-08-05T07:18:54.713 回答
0

尝试类似的东西

$('body').on('keyup', '.relevantClass', function() { ... }

这个想法是您使用现有的根元素并将您的类选择器用作过滤器。请参阅此处的示例。

于 2012-08-05T07:24:03.120 回答