为什么我的click函数jquery不起作用

时间:2018-02-18 05:56:22

标签: jquery html

此代码的工作原理如下:

$(document).on('click','#header',function(ev){
    var body = $("html");
body.animate({scrollTop:0}, '500', 'swing', function() { 
   var clone = $(ev.target).clone();
  $('body').prepend(clone);
});

});

但不是这样吗?

$('#menu ul li #page1').on('click','#header',function(ev){
    var body = $("html");
body.animate({scrollTop:0}, '500', 'swing', function() { 
   var clone = $(ev.target).clone();
  $('body').prepend(clone);

});

});

为什么?我是jQuery的新手,这可以向下滚动。

$(document).ready(function(){
    $('#menu ul li #page2').on('click', function(){
        $('html,body').animate({scrollTop: $("#services").offset().top  - 30}, 1000);
    }); 
}); 

HTML:

<ul>
<li><a class="a1" id="#page1" href="#">Portfolio</a></li>
<li><a class="a1" id="page2" href="#">Services</a></li>
<li><a class="a1" id="#page3" href="#">Contact</a></li>
</ul>

1 个答案:

答案 0 :(得分:0)

问题是# char。

#是选择ID的符号,不得在ID中使用:

<ul>
<li><a class="a1" id="page1" href="#">Portfolio</a></li>
<li><a class="a1" id="page2" href="#">Services</a></li>
<li><a class="a1" id="page3" href="#">Contact</a></li>
</ul>

将html更改为此必须正常工作。

并且您的代码不符合逻辑:

$('#menu ul li #page1').on('click','#header',function(ev){

这意味着点击带有header ID的元素进入<a class="a1" id="page1" href="#">时,您必须正确选择选择器。

例如:

$(document).on('click','#menu ul li #page1',function(ev){

演示: https://jsfiddle.net/jsjrb29s/2/