如何从$(“”)。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); });