0

我想要做的是在点击时制作一个按钮,转到此页面上工艺表的左上角。然后,如果再次单击该元素,它将返回。我正在使用的特定 jQuery 是:

$("#sword").click(function () {
    if ( $("#sword").hasClass("s1") ) {
        $('#sword.s1').switchClass( "s1", "sd1", 1000, "linear" );
    } else if (  $("#sword").hasClass("sd1") ) {
        $('#sword').switchClass( "sd1", "s1", 1000, "linear" );
        $('#bukkit').switchClass( "s1", "sd2", 1000, "linear" );
        $('#grass').switchClass( "s1", "sd3", 1000, "linear" );
    }
});

sd1在下方,s1是上方的插槽。正如您目前所看到的,它会反弹,然后立即反弹回落。我曾尝试在单击时将弹回设置为一个单独的功能.s1,但是当我单击它时不会发生任何事情。

4

2 回答 2

0

尝试重新排序您switchClass的 id 类别sword更改为sd2后更改sd1s1

$("#sword").click(function () {

    if ( $("#sword").hasClass("s1") ) {
        $('#sword.s1').switchClass( "s1", "sd1", 1000, "linear" );
    } else if (  $("#sword").hasClass("sd1") ) {
        $('#bukkit').switchClass( "s1", "sd2", 1000, "linear" );
        $('#grass').switchClass( "s1", "sd3", 1000, "linear" );
        $('#sword').switchClass( "sd1", "s1", 1000, "linear" );
    }

});
于 2013-04-22T01:39:21.100 回答
0

刚刚在您链接到的页面上检查了您的代码。您已将两个单击处理程序绑定到#sword. 你只展示了第一个。您的代码如下

$("#sword").click(function () { // handler 1
    if ( $("#sword").hasClass("s1") ) {
        $('#sword.s1').switchClass("s1", "sd1", 1000, "linear");
    } else if ($("#sword").hasClass("sd1")) {
        $('#sword').switchClass( "sd1", "s1", 1000, "linear" );
        $('#bukkit').switchClass( "s1", "sd2", 1000, "linear" );
        $('#grass').switchClass( "s1", "sd3", 1000, "linear" );
    }
});

// a few lines later    

$("#sword").click(function() { // handler 2
    $('#sword').switchClass( "s1", "sd1", 1000, "linear" );
    $('#bukkit').switchClass( "s1", "sd2", 1000, "linear" );
    $('#grass').switchClass( "s1", "sd3", 1000, "linear" );
}); 

单击剑首先执行处理程序 1,然后执行处理程序 2。从代码中可以清楚地看出,处理程序 1 将其向上移动,处理程序 2 将其向下移动。

如果您解释为什么要编写第二个处理程序,我可能会提供更多帮助。

于 2013-04-22T02:34:04.927 回答