Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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
event.preventDefault();不使用jQuery中的.on_Jquery - Fatal编程技术网

event.preventDefault();不使用jQuery中的.on

event.preventDefault();不使用jQuery中的.on,jquery,Jquery,从jQuery 1.7开始,.live已被弃用,并被上的.on替换。但是,我很难让jQuery.on处理事件.preventDefault()。在下面的示例中,单击锚定标记会将我带到链接页面,而不是阻止跟随链接的默认浏览器操作 jQuery('.link-container a').on('click', function(event) { event.preventDefault(); //do something }); 但是,与.live相同的代码工作时不会出现任何问题 jQue

从jQuery 1.7开始,
.live
已被弃用,并被上的
.on替换。但是,我很难让jQuery
.on
处理
事件.preventDefault()。在下面的示例中,单击锚定标记会将我带到链接页面,而不是阻止跟随链接的默认浏览器操作

jQuery('.link-container a').on('click', function(event) {
    event.preventDefault();
//do something
});
但是,与
.live
相同的代码工作时不会出现任何问题

jQuery('.link-container a').live('click', function(event) {
    event.preventDefault();
//do something
});

我目前使用的是Wordpress 3.3.1附带的jQuery版本1.7.1。我这里怎么了?

您没有正确绑定它。
.on()
-方法在做您想做的事情时就像
.delegate()
一样工作。以下是正确使用的示例:

$('.link-container').on('click', 'a', function(event){ 
    event.preventDefault();
})
这是假设.link容器在页面加载时存在,并且不是动态加载的。您需要将委托方法绑定到最接近的静态祖先,在第二个参数中,在本例中为
'a'
,指定委托方法应用于哪些项

仅使用
$('selector')。在('click',function(){})
上,与使用
$('selector')的结果完全相同。单击(function(){})


下面是一个关于JSFIDLE的示例:

如果动态添加
a
元素,则需要将
on()
与过滤器一起使用(以前是
delegate()
),如下所示:

jQuery('.link-container').on('click', 'a', function(event) {
    event.preventDefault();
    //do something
});
这就假定
.link container
不是动态的,在页面加载时可供DOM使用。

请尝试以下方法:-

var $j = jQuery.noConflict();

$j(function(){    
     j('.link-container').on('click', 'a', function(event) {
        event.preventDefault();
     });     
});

请给我一个明确的解释。你的例子很有效。但是,页面加载期间唯一可用的父容器至少高于3级,并且此嵌套结构中还有其他锚定标记。您的示例开始影响其他锚定标记,我不打算这样做。应该做些什么来避免相同的情况?通过为锚定标记指定一个单独的类来实现这一点。这是一个解决方案,另一个解决方案是在第二个参数中继续使用选择器,即不使用
$(“#容器”)。在('click','a')
上,可以使用更具体的选择器,如
$(“#容器”)。在上('click','.someContainer.linkcontainer a')
。但是使用一个类非常有效:)Thx获取信息。在其他情况下会有帮助。