【问题标题】:getting only last class assigned with this.class仅获得分配给 this.class 的最后一个类
【发布时间】:2011-12-04 00:49:40
【问题描述】:

请任何人看看这段代码有什么问题, 我有 2 个带有 .man 和 .girl 的类图像,每个图像包含 10 个图像。 接下来我有 2 个 div 的 #manCount 和 #girlCount 显示总图像数(每个 10)

当我将一张图片移动到#drop 时,它会从#manCount 减少 1 个数字。所以总共有 10 个类名为 .man 的图像,当最后一个图像移动到 #drop 时,我会弹出一个窗口,显示所有图像都已处理。

现在我也想处理 .girl 类图像,但是当我让两个类都初始化时,它只能与 .girl 类一起使用。

function Dragger(c){
this.classname = c;

}
Dragger.prototype.Init = function(){
    var classM = this.classname;
    var manCount = parseInt($("#"+classM+"Count").text());
    $("."+classM).draggable();
        $("#drop").droppable({
          drop: function() {
           if(manCount <= 0){
               alert("There are no more pictures left. " + classM );
               return false;
           }
            manCount -= 1;
           $("#"+classM+"Count").text(manCount);
              }
        });
};

var man = new Dragger("man");
man.Init();

上面的代码运行得很好,但是当我初始化一个新对象时

    var man = new Dragger("man");
    man.Init();
    var girl = new Dragger("girl");
    girl.Init();

它总是选择女孩对象,有什么帮助我做错了吗?

它总是在拖动时返回我的女性对象。 显示截图:http://screensnapr.com/v/SrsyGz.png

这里有问题:http://screensnapr.com/v/hxrZYa.png

谢谢

编辑:

好的,我已经通过添加鼠标悬停事件解决了这个问题,我不确定它有多完美,因为我对它很陌生,但它可以按预期工作

$(".man").mouseover(function(){
  var man = new Dragger("man");
  man.Init();
});
$(".girl").mouseover(function(){
  var girl = new Dragger("girl");
  girl.Init();
});

【问题讨论】:

  • 请在句首大写I和字母以增加可读性。
  • 抱歉修正了一些,接下来会注意的。

标签: javascript jquery prototype-oriented


【解决方案1】:

可能是因为您在 Init 函数中调用了 $('#drop').droppable(),所以它在同一个元素上被多次启动 (#drop)。

【讨论】:

  • 感谢输入,我不确定发生了什么,因为我对 jquery 很陌生,我认为问题是我同时初始化了两个类,所以它只选择了最后一个,所以它总是减少最后一个对象值。这是一个屏幕发生了什么screensnapr.com/v/hxrZYa.png
  • 您可能应该将逻辑放在 drop 回调中以避免范围问题。
  • 谢谢我会检查,我实际上找到了一个解决方案,只在鼠标悬停时初始化对象,你能看到上面告诉我是否可以,我对这个概念很陌生。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-29
  • 2017-10-16
  • 2019-09-14
相关资源
最近更新 更多