如何在javascript中覆盖函数的行为

How to overwrite behaviour of function in javascript

本文关键字:函数 覆盖 javascript      更新时间:2023-09-26

我正试图覆盖我正在开发的网站的javascript函数的行为。我是javascript的新手,我在弄清楚这一点时遇到了问题。我看了几个视频,读了一些书,这就是我想到的。

jQuery(document).ready(function ($) {
  function displayTab(element) {
    alert('here'); // test that I am getting here
    var tab = Drupal.quicktabs.tab
    // Set tab to active.
    $(this).parents('li').siblings().removeClass('active');
    $(this).parents('li').addClass('active');
    // Hide all tabpages.
    tab.container.children().addClass('quicktabs-hide');
    if (!tab.tabpage.hasClass("quicktabs-tabpage")) {
        tab = new Drupal.quicktabs.tab(element);
    }
    tab.tabpage.removeClass('quicktabs-hide');
    return false;
  }
  if ($( '#quicktabs-menu_block').length > 0) {
    $('#quicktabs-menu_block .quicktabs-tabs li').each(function() {
        $('a', this).bind({
            mouseenter: function(){
               $(this).displayTab($(this));
            }
        });
    });
  }
});

这不起作用-函数从未被调用。我不确定那是什么,但显然我错过了一些基本的东西。我错过了什么?

您在错误的上下文中调用函数。在bind()方法中,上下文选择器:

 $(this)

指的是鼠标的上下文,你所需要做的就是替换

$(this).displayTab($(this));

带有

displayTab($(this));

我已经在你的代码的精简版本中对此进行了说明。