【问题标题】:Fire event if margin-left == 200px;如果 margin-left == 200px 则触发事件;
【发布时间】:2011-12-14 02:32:07
【问题描述】:

我正在尝试在 jQuery 中创建一种侦听器。我想要做的是一直检查,如果 divs margin-left == 200px 然后触发一个事件。 但我不知道该怎么做。 也许更好的是,div 调用事件函数,当它是 margin-left == 200px 时,但我什至不确定,如果这可能的话。

任何帮助将不胜感激。

【问题讨论】:

标签: javascript jquery dom


【解决方案1】:

您可以通过执行 1 秒的 setinterval() 来检查“所有时间”,然后在时钟事件的处理程序中检查 div 的左边距,并可能在/如果它达到 200 时检查 alert() .

编辑:作为一个信息点:每隔一段时间(即每秒)检查一次的过程称为“轮询”。

【讨论】:

    【解决方案2】:

    以下函数将每 1 秒检查一次具有 elementClass 类的元素是否将 margin-left 设置为 200px。如果是这样,将触发alert(例如)。

    $(document).ready(function(){
       setInterval(function(){
          if ($(".elementClass").css("marginLeft")=='200px'){
             //do something here
             alert("margin is 200px");
          }
       }, 1000);
    });
    

    但是,此代码随后将每秒触发margin-left 为200px 的事件。以下将仅在第一次检测到具有 200px margin-left 的元素时触发事件:

     var eventtrig = 0;
     $(document).ready(function(){
       setInterval(function(){
          if ($(".elementClass").css("marginLeft")=='200px' && eventtrig=0) {
             //do something here
             alert("margin is 200px");
             eventtrig=1;
          }
          else {
             eventtrig=0;
          }
       }, 1000);
    });
    

    【讨论】:

    • 这会是目前为止最好的解决方案。但我不确定你是否应该换成margin-left。
    • @OptimusCrime - 为.css("marginLeft")?我认为我以正确的方式做到了这一点。请参阅 jquery api.jquery.com/css 处的示例
    • 两者都可以。只是觉得使用正确的css-attribute更容易,所以jQuery不必先解析它。
    • @OptimusCrime - 干杯我没有意识到这一点。知道为什么你可以使用marginLeft 代替吗?有什么意义?
    • 我认为这是因为 jQuery 的编码约定。他们深受 java 的影响。
    猜你喜欢
    • 2017-05-01
    • 2011-09-19
    • 1970-01-01
    • 2014-08-14
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多