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

时间:2013-08-28 08:06:07

标签: javascript jquery

可以从中获取布尔值吗?

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

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

修改

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

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

This is screen from google chrome console log

6 个答案:

答案 0 :(得分:4)

将布尔值存储到某些var:

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

答案 1 :(得分:4)

您只需使用变量

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

答案 2 :(得分:1)

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

  

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

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

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

对于特定对象

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

Live demo

使用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);

Demo for the Edit

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

你总是会收到错误的方式,你的代码顺序不正确

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

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

答案 5 :(得分:0)

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

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