0

所以我为我的网站设置了一个滚动代码。

<section class="fpage">
   <a class="next" href="#view">test</a>
</section>

<section class="cpage">test</section>

在 jquery 我有。

$(document).ready(function () {
    $('.next').click(function (event) {
        var cpage = $(this).find('a').attr('href');
        var fpage = $(this).closest('section');
        event.preventDefault();

        fpage.addClass('anim').delay(500).queue(function(next){
            $(this).removeClass().addClass('cpage');
            next();
            cpage.removeClass('.cpage').addClass('fpage');
        });
    });
});

我希望var:cpage取值.next href(在本例中为:#view)并将其用作变量的名称。在这种情况下我没有错什么?我怎样才能把cpagevar变成#view?

4

3 回答 3

2

.next是它a本身。你不需要使用.find

  var cpage = $(this).attr('href'); 

或者

  var cpage = this.href;

编辑:作为cpageID,您需要这样做才能选择元素

 $(cpage).removeClass('.cpage').addClass('fpage');
于 2013-05-15T20:13:57.147 回答
1

据我了解,这应该解决:

fpage.addClass('anim').delay(500).queue(function(next){
    $(this).removeClass().addClass('cpage');
    next();
    $(cpage).removeClass('.cpage').addClass('fpage');
});
于 2013-05-15T20:19:10.777 回答
0

你有一些不合适的地方,但总的来说,没什么大不了的。

第一的,

$('.next').click(function (event) {
    var cpage = $(this).find('a').attr('href');

它不能叫它自己。.next是 a 标签的一个类,那么如果标签是唯一的 a 标签元素,它如何找到带有 a 标签的内部元素呢?jQuery 的.find工作是查找子孙等它所调用的元素。因此,这一行很容易写成:

var cpage = $(this).attr('href');

第二,

cpage.removeClass('.cpage').addClass('fpage');

cpage只是一个字符串变量,而不是 jQuery 对象,因此需要稍作改动。尝试:

$(cPage).removeClass

我不知道您使用的是哪个版本的 jQuery,但我对您的代码进行了彻底的清理和编辑,并使用最新的 jQuery 发布了一个 jsFiddle。.on需要注意的重要一点是,如果您使用的是旧版本,则某些内容可能会有所不同,例如旧版本.bind.live旧版本。

jsFiddle

$(function() {
    $(".next").on("click", function(e) {
        e.preventDefault();
        var cPage = $(this).attr("href"),
            fPage = $(this).closest("section");

        fPage.addClass("anim").delay(500).queue(function(n) {
            $(this).removeClass().addClass('cpage');
            n();
            $(cPage).removeClass('.cpage').addClass('fpage');
        });
    });
})
于 2013-05-15T20:30:46.130 回答