如何从$(“”)。on()得到真/假?

有可能从这得到布尔值?

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

我想检查用户是否在其中一个div上使用“.svgobjects”类进行了mousedown。

编辑:

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

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

这是来自谷歌Chrome控制台日志的屏幕

将布尔值存储到某个var:

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

你只需使用一个变量

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

另一种可能是使用数据()

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

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

对于特定对象

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

现场演示

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

更新问题后编辑:

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

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

编辑演示

之所以没有按预期工作,是因为您编写的代码不是以线性方式执行的。 ‘$(“。svgobjects”)。on(“mousedown”,…’block是一个带有回调的事件监听器,只有在该事件发生时才会触发。

如果您在单击某些内容时正在查看执行任务,可能将其包装在函数中并在mousedown回调中调用该函数。

你将永远收到错误的方式,你的代码顺序是不对的

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

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

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

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