【问题标题】:How do i call jquery variables?我如何调用 jquery 变量?
【发布时间】:2023-03-26 04:33:01
【问题描述】:

我相信这很简单,但我是 jquery 新手,有点卡住了。

我写了这段代码,效果很好:

function engageMaps(){
  $(".destinations #cancun").hover(
    function () {
      $(".image_map #cancunPin").addClass("active");
    },
    function () {
      $(".image_map #cancunPin").removeClass("active");
    }
  );
};

然后我尝试将项目分解为变量以使其更灵活,但无法使其工作。我是这样写的:

function engageMaps(){
  var $destination = $(".destinations #cancun");
  var pin = $(".image_map #cancunPin");
  $destination.hover(
    function () {
      $pin.addClass("active");
    },
    function () {
      $pin.removeClass("active");
    }
};

这应该与第一个代码块完全相同。任何帮助都非常感谢谢谢

【问题讨论】:

  • 你的变量在一个地方是$pin,在另一个地方是pin

标签: javascript jquery function variables


【解决方案1】:

你错过了); .hover..

$destination.hover(
   function () {
     $pin.addClass("active");
   },
   function () {
     $pin.removeClass("active");
   }
);

你也错过了$。见下文。

var $pin = $(".image_map #cancunPin");

完整代码:

function engageMaps(){
  var $destination = $(".destinations #cancun");
  var $pin = $(".image_map #cancunPin"); //Added $ to pin var name as that is how it is referenced below

  $destination.hover(
    function () {
      $pin.addClass("active");
    },
    function () {
      $pin.removeClass("active");
    }
   ); //this was missing
} //removed semicolon as it is not necessary

【讨论】:

  • 另外,变量pin在初始化和调用时没有美元符号,它们是不同的变量。
【解决方案2】:
    v---------- You forgot this
var $pin = $(".image_map #cancunPin");

而且您还缺少); for .hover

那么,代码的最终版本:

function engageMaps() {
    var $destination = $(".destinations #cancun");
    var $pin = $(".image_map #cancunPin");
    $destination.hover(
        function() {
            $pin.addClass("active");
        }, function() {
            $pin.removeClass("active");
        }
    );
};​

【讨论】:

    【解决方案3】:
    $destination.hover(
        function () {
          $pin.toggleClass("active");
        });
    

    所以完整的代码是:

    function engageMaps(){
      var $destination = $(".destinations #cancun");
      var $pin = $(".image_map #cancunPin"); // you use pin instead of $pin
      $destination.hover(
        function () {
          $pin.toggleClass("active");
      });
    };
    

    【讨论】:

    • 我很想知道hovertoggleClass 将如何工作.. 就像mouseenter 第一次addClass.. mouseout 没有任何反应.. 然后mouseenter 再次和@ 987654329@ 将 removeClass.. 这不是预期的效果。我不认为 toggleClasshover 的预期效果一样。
    • @Vega 不,不,没关系。我是来学习和帮助的。您如何看待这种悬停行为。
    • 我的假设是错误的.. hover 带有一个函数参数将是 handlerInOut(eventObject) - 这是当鼠标指针进入或离开元素时执行的函数。所以现在一切都说得通了。
    • @Vega 我从源代码中知道这一点,但是像你这样的人的解释给了我更多详细和优雅的信息。谢谢
    猜你喜欢
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 2022-12-06
    相关资源
    最近更新 更多