Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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
jqueryhashchange问题_Jquery_Hashchange - Fatal编程技术网

jqueryhashchange问题

jqueryhashchange问题,jquery,hashchange,Jquery,Hashchange,我有一个简单的代码,有三种形式,一种是不起作用的,另一种是起作用的,但我想了解是什么导致两种方法起作用 请看一下简单的代码。 (它不能正常滑动) 而如果只附加了div id,那么它将正确地滑动。 (这是我的第一个问题,到底是什么导致它工作?仅仅改变ID是如何工作的?) 以另一种形式。 (它也可以工作,所以这里是我的第二个问题,通过阻止默认行为,它是如何工作的……以及什么是破坏其工作的默认行为)对于第一个示例,它不工作的原因是因为您没有阻止链接的默认行为。当您使用散列标签(例如,#two)创建链接

我有一个简单的代码,有三种形式,一种是不起作用的,另一种是起作用的,但我想了解是什么导致两种方法起作用

请看一下简单的代码。 (它不能正常滑动)

而如果只附加了div id,那么它将正确地滑动。 (这是我的第一个问题,到底是什么导致它工作?仅仅改变ID是如何工作的?)

以另一种形式。
(它也可以工作,所以这里是我的第二个问题,通过阻止默认行为,它是如何工作的……以及什么是破坏其工作的默认行为)

对于第一个示例,它不工作的原因是因为您没有阻止链接的默认行为。当您使用散列标签(例如,
#two
)创建链接时,该链接会将页面移动到具有相同
ID
参数的元素(例如,

因为在第一个示例中,您有一个指向
#two
的链接,并且您有一个id相同的元素,
,它跳转到该元素,然后继续执行jQuery动画,使它看起来好像正在移动到
#三个

第二个示例是
href
属性值与任何HTML元素都不匹配,因此它可以正常工作

在第三个示例中,您正在阻止链接的默认行为,因此它可以正常工作

您可以使用第三个示例中的方法防止默认行为,也可以将return设置为false;单击事件结束时:

$( function () {
    $(".clickIt a").click( function () {
        var linked = $(this).attr("href");
        var pos = $(linked).position();

        $(".clickSlider").stop().animate({left: -pos.left,}, 500 );

        return false;
    });
});​​​​​

希望我的解释是有意义的:)

第一个示例中它不起作用的原因是因为您没有阻止链接的默认行为。当您使用散列标签(例如,
#two
)创建链接时,该链接会将页面移动到具有相同
ID
参数的元素(例如,

因为在第一个示例中,您有一个指向
#two
的链接,并且您有一个id相同的元素,
,它跳转到该元素,然后继续执行jQuery动画,使它看起来好像正在移动到
#三个

第二个示例是
href
属性值与任何HTML元素都不匹配,因此它可以正常工作

在第三个示例中,您正在阻止链接的默认行为,因此它可以正常工作

您可以使用第三个示例中的方法防止默认行为,也可以将return设置为false;单击事件结束时:

$( function () {
    $(".clickIt a").click( function () {
        var linked = $(this).attr("href");
        var pos = $(linked).position();

        $(".clickSlider").stop().animate({left: -pos.left,}, 500 );

        return false;
    });
});​​​​​

希望我的解释有意义:)

如果我理解正确,那么在我不工作的代码中实际上有两个动作。首先是jQuery的click函数,然后是jQuery本身,这就是为什么当我单击'two'时,它会移动到第三个div?如果你说的是假的话,那也行。。但它会停止移动或单击功能?你是对的。通过输入
return false
,它将停止
移动。如果我理解正确,那么在我不工作的代码中实际上有两个移动。首先是jQuery的click函数,然后是jQuery本身,这就是为什么当我单击'two'时,它会移动到第三个div?如果你说的是假的话,那也行。。但它会停止移动或单击功能?你是对的。通过输入
return false
,它将停止
移动。