Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript .on(';mouseenter';…未检测附加元素(jQuery)_Javascript_Jquery_Mouseevent - Fatal编程技术网

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
,所以应该是