0

我有这个代码来切换切换按钮图像:

$("#invio_scatola_on, #invio_scatola_off").click(function(){
    $("#invio_scatola_off").toggle();
    $("#invio_scatola_on").toggle();
});

执行时,浏览器会转到页面顶部。为什么?

4

4 回答 4

3

您可能需要阻止您单击的任何元素的默认操作:

$("#invio_scatola_on, #invio_scatola_off").on('click', function(e){
    e.preventDefault();
    $("#invio_scatola_off, #invio_scatola_on").toggle();
});
于 2012-05-31T09:16:52.387 回答
1

根据您提供的少量信息,如果浏览器滚动到顶部,则意味着您需要阻止其默认行为。

检查浏览器是否将“某物”附加到当前 URL...

您可以像这样防止这种情况:

$("#invio_scatola_on, #invio_scatola_off").click(function(event){

  // prvent default behavior
  event.preventDefault();

  $("#invio_scatola_off").toggle();
  $("#invio_scatola_on").toggle();
});

有关它如何工作的更多信息,请参阅 jQuery event.preventDefault()

于 2012-05-31T09:16:42.663 回答
1

我只能猜测,因为您没有发布您的 html 代码。很可能您的两个元素与href="#". 单击处理程序后,将触发常规操作,导航到#您网站上的锚点(位于顶部)。

尝试:

$("#invio_scatola_on, #invio_scatola_off").click(function(event){
    $("#invio_scatola_off").toggle();
    $("#invio_scatola_on").toggle();
    event.preventDefault();
});

看看是否有帮助。更多关于使用 jQuery 取消事件的信息:

http://api.jquery.com/event.preventDefault/

于 2012-05-31T09:17:08.857 回答
1

我认为您将单击标记与href绑定#这样您就可以使用javascriptpreventDefault(),例如:

$("#invio_scatola_on, #invio_scatola_off").click(function(evt){
    evt.preventDefault();
    $("#invio_scatola_off").toggle();
    $("#invio_scatola_on").toggle();
});
于 2012-05-31T09:23:40.020 回答