首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery -选择动态创建的div

jQuery -选择动态创建的div
EN

Stack Overflow用户
提问于 2012-05-23 08:45:25
回答 4查看 3.9K关注 0票数 4

我有一个简短的jQuery问题:

首先,我的HTML:

代码语言:javascript
复制
<div id="taskinput">
    <form>
         <input id="taskinput-box" type="text"></input>
         <input type="submit"></input>
    </form>
</div><!-- end taskinput -->
<div id="taskoutput"></div><!-- end taskoutput -->

在创建新类.task的同时,我使用.append在#taskoutput from user中创建了内容。

代码语言:javascript
复制
$("#taskinput").submit(function() {
    var tasktext = $('#taskinput-box').val()
    $('#taskoutput').append('<div class="task">'+tasktext+'</div>');
    $('#taskinput-box').val("");
    return false;
});

上面的代码运行得很好;当我尝试选择创建的div时,问题就出现了。以下代码不起作用:

代码语言:javascript
复制
$(".task").click(function() {
    $(this).slideUp();
});

我遗漏了什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-23 08:48:08

您必须使用与on类似的delegate event

代码语言:javascript
复制
$('#taskoutput').on('click', '.task', function(){
    $(this).slideUp();    
});

@salek ,但使用on

阅读on docs

事件处理程序仅绑定到当前选定的元素;当您的代码调用.on()时,它们必须存在于页面上。若要确保元素存在并且可以选择,请在文档就绪处理程序内为页面上HTML标记中的元素执行事件绑定。如果要将新的HTML注入到页面中,请在将新的HTML放入页面后选择元素并附加事件处理程序。或者,使用委托事件附加事件处理程序,如下所述。

Delegated events的优势在于,它们可以处理稍后添加到文档中的后代元素中的事件。通过选取在附加委托事件处理程序时保证存在的元素,可以使用委托事件来避免频繁附加和移除事件处理程序。例如,此元素可以是Model- view -Controller设计中的视图的容器元素,或者,如果事件处理程序想要监视文档中的所有冒泡事件,则可以是文档。在加载任何其他超文本标记语言之前,document元素在文档头中可用,因此可以安全地在那里附加事件,而无需等待文档准备就绪。

票数 2
EN

Stack Overflow用户

发布于 2012-05-23 08:50:24

$(".task").click(...说:“找到当前存在的所有.task元素,并将事件处理程序绑定到它们。如果元素是稍后创建的,如您的示例所示,它们将不会绑定事件处理程序。

您需要将事件处理程序绑定到始终存在的元素。由于祖先元素会被通知其后代上的事件,因此单击.task元素将始终触发#taskoutput上的click处理程序。jQuery的on方法让这一切变得简单:

代码语言:javascript
复制
$('#taskoutput').on('click', '.task', function(){
    $(this).slideUp();    
});
票数 2
EN

Stack Overflow用户

发布于 2012-05-23 08:47:47

使用jquery绑定在运行时生成的.on()上的事件。如下所示:

代码语言:javascript
复制
$("#taskoutput").on({
    click: function() { $(this).slideUp(); }
}, '.task');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10712051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档