Javascript .on(';mouseenter';…未检测附加元素(jQuery)
下面的代码没有将事件绑定到附加元素(使用Javascript .on(';mouseenter';…未检测附加元素(jQuery),javascript,jquery,mouseevent,Javascript,Jquery,Mouseevent,下面的代码没有将事件绑定到附加元素(使用.insertBefore()) 根据我的理解,.on()应该像.live()一样工作。不是这样吗 <div class="todoColumn"> <div class="projectHeader"> <div class="title">Example</div>Subtitle </div> <div class="todo">
.insertBefore()
)
根据我的理解,.on()
应该像.live()
一样工作。不是这样吗
<div class="todoColumn">
<div class="projectHeader">
<div class="title">Example</div>Subtitle
</div>
<div class="todo">
<div class="checkbox"><span class="check pictos">3</span></div>
<div class="text">another test</div>
<div class="floatfix"></div>
</div>
<div class="todo">
<div class="checkbox"><span class="check pictos">3</span></div>
<div class="text">another test</div>
<div class="floatfix"></div>
</div>
</div>
要以您想要的方式使用它,您需要将选择器放置在函数中,并将事件绑定到文档:
$(document).on("mouseenter", ".column .todo .checkbox", function(){
// do stuff
});
而且,正如jfriend00所建议的,将事件绑定到最近的父级会更有效:
$(".column .todo").on("mouseenter", ".checkbox", function(){
// do stuff
});
要以您想要的方式使用它,您需要将选择器放置在函数中,并将事件绑定到文档:
$(document).on("mouseenter", ".column .todo .checkbox", function(){
// do stuff
});
而且,正如jfriend00所建议的,将事件绑定到最近的父级会更有效:
$(".column .todo").on("mouseenter", ".checkbox", function(){
// do stuff
});
它取决于选择器放置的位置。将其放置在第一个jQuery对象中没有任何
.live()
行为。它绑定静态事件处理程序
在jQuery对象中指定注释父对象,并将选择器放在.on()
的参数中,可以提供实时行为:
$(document.body).on('mouseenter', '.todoColumn .todo .checkbox', function() {
$(this).find('.check').css('visibility','visible');
});
如果选择一个比document.body更接近实际对象的公共父对象,它的工作效率会更高(并且比.live()
)更好。.live()
的一个问题是document对象上的事件处理程序太多(都要检查选择器)。.on()的工作方式更像.delegate()
并允许您将事件处理程序放在更接近实际对象的公共父级上
编辑:现在您已经包含了HTML,更高效的代码应该是jQuery对象中有一个公共父选择器,而中有一个最简单的选择器。on()
参数:
$('.todoColumn').on('mouseenter', '.checkbox', function() {
$(this).find('.check').css('visibility','visible');
});
它取决于选择器放置的位置。将其放置在第一个jQuery对象中没有任何
.live()
行为。它绑定静态事件处理程序
在jQuery对象中指定注释父对象,并将选择器放在.on()
的参数中,可以提供实时行为:
$(document.body).on('mouseenter', '.todoColumn .todo .checkbox', function() {
$(this).find('.check').css('visibility','visible');
});
如果选择一个比document.body更接近实际对象的公共父对象,它的工作效率会更高(并且比.live()
)更好。.live()
的一个问题是document对象上的事件处理程序太多(都要检查选择器)。.on()的工作方式更像.delegate()
并允许您将事件处理程序放在更接近实际对象的公共父级上
编辑:现在您已经包含了HTML,更高效的代码应该是jQuery对象中有一个公共父选择器,而中有一个最简单的选择器。on()
参数:
$('.todoColumn').on('mouseenter', '.checkbox', function() {
$(this).find('.check').css('visibility','visible');
});
是否包括最新的jQuery?1.7.Yup中添加了
on()
函数方法正在工作,只是没有为附加项添加。您确定附加项具有正确的类吗?您正在选择复选框
类,因此确保在附加该类时添加该类。刚刚完成此工作:$(document.body)。on('mouseenter','.checkbox',function()){
-不能使用上下文选择器在这种情况下,只需将on()
绑定到.column.todo
。这样效率会更高。请参阅我的编辑。是否包括最新的jQuery?在1.7.Yup中添加了on()
函数。.on()
方法正在工作,只是没有为附加项添加。您确定附加项具有正确的类吗?您正在选择复选框
类,因此确保在附加该类时添加该类。刚刚完成此工作:$(document.body)。on('mouseenter','.checkbox',function()){
-不能使用上下文选择器在这种情况下只需绑定()到.column.todo
。这将更有效。请参阅我的编辑。与@Purmou的解决方案类似,上下文选择器”。column.todo.checkbox“
不起作用,但我可以通过为它提供一个更简单的选择器”。checkbox“
@DesignerGuy-。on()
与上下文选择器配合使用。您必须向我们展示您的实际HTML,包括为我们添加的代码,以便我们对什么是合适的选择器提出进一步建议-我们只是复制了您在问题中包含的内容。只是在Nevermind上添加了HTML元素。刚刚成功。谢谢!请+1我的问题i如果你认为这对将来的其他人会有帮助:)我已经根据你的实际HTML添加到了我的答案的末尾。与@Purmou的解决方案类似,上下文选择器'.column.todo.checkbox'
不起作用,但我能够通过向它提供一个更简单的选择器'.checkbox'
@DesignerGuy-.on()
与上下文选择器配合使用。您必须向我们展示您的实际HTML,包括为我们添加的代码,以便我们对什么是合适的选择器提出进一步建议-我们只是复制了您在问题中包含的内容。只是在Nevermind上添加了HTML元素。刚刚成功。谢谢!请+1我的问题i如果您认为这对将来的其他人会有帮助:)我已经根据您的实际HTML添加到了我的答案的末尾答案中讨论的问题,您的选择器'.column.todo.checkbox'
是错误的。您没有.column
。您有.todoColumn
,因此除了()答案中讨论的问题,您的选择器'.column.todo.checkbox'
是错误的。您没有.column
。您有.todoColumn
,所以应该是。