3

有可能从中得到布尔值吗?

$(".svgobjects").on("mousedown", function(){
        console.log("clicked");
});

我想检查用户是否在具有“.svgobjects”类的 div 上按下鼠标。

编辑:

为什么这段代码总是返回“假”?

var ifclicked=false;
    $(".svgobjects").on("mousedown", function(){
        console.log("clicked");
        ifclicked = true;
    });
    console.log("ifclicked "+ifclicked);

这是来自谷歌浏览器控制台日志的屏幕

4

6 回答 6

4

将布尔值存储到某个 var:

var clicked = false;
$(".svgobjects").on("mousedown", function(){
  clicked = true;
});
于 2013-08-28T08:07:34.957 回答
4

您只需使用一个变量

var IsSvgobjectsMousedown = false;
$(".svgobjects").on("mousedown", function(){
        IsSvgobjectsMousedown = true;
        console.log("clicked");
});
于 2013-08-28T08:07:38.080 回答
1

这不能按预期工作的原因是因为您编写的代码没有以线性方式执行。'$(".svgobjects").on("mousedown",...' 块是一个带有回调的事件监听器,只有在该事件发生时才会触发。

如果您正在查看单击某物后执行的任务,则可以将其包装在一个函数中并在 mousedown 回调中调用该函数。

于 2013-08-28T09:15:28.493 回答
1

另一种可能性是使用 data()

存储与指定元素关联的任意数据。返回设置的值。

$(".svgobjects").on("mousedown", function(){
      $(".svgobjects").data("clicked",  "yes");
});

alert($(".example").data("clicked")); 

针对特定对象

 $(".svgobjects").on("mousedown", function(){
          $(this).data("clicked",  "yes");
    });

现场演示

有了它,data() 您可以在单击时将一些数据存储到。并element在需要时检索该信息:)

更新问题后编辑:

这意味着您variable在回调之前记录 , 在记录完成后更新变量。

$(".example").append("<input  class='svgobjects'</input>")
var ifclicked=false;
    $(".svgobjects").on("mousedown", function(){
        console.log("clicked");
        ifclicked = true;
        alert(ifclicked);
    });
    console.log("ifclicked "+ifclicked);

编辑演示

于 2013-08-28T08:16:12.593 回答
0

您将始终收到错误的信息,您的代码顺序不正确

var ifclicked=false;
    $(".svgobjects").on("mousedown", function(){
        console.log("clicked");
        ifclicked = true;
        console.log("ifclicked "+ifclicked);
    });

现在它将返回 true,您之前的序列不正确

于 2013-08-28T08:25:47.513 回答
0

您应该将最后一个代码移动到回调中,如下所示,

var ifclicked=false;
$(".svgobjects").on("mousedown", function(){
    console.log("clicked");
    ifclicked = true;
    console.log("ifclicked: "+ifclicked);
});
于 2013-08-28T08:26:39.960 回答