调用函数时会检测到click

时间:2011-11-23 10:09:31

标签: javascript jquery

我有一个看起来像这样的函数:

function reset_all_lightbox_assets()
{
    $(document).one("click", function () {  
        $("#lightbox-asset-wrapdiv .category-asset-div-tileview").css({"background-color": "#f9f9f9"});
        $("#lightbox-asset-wrapdiv .category-asset-table-td-category,#lightbox-asset-wrapdiv .category-asset-table-td-id").css("color", "#777777");
        $("#lightbox-asset-wrapdiv .category-asset-table-td-name").css("color", "#999999");
    });
}

调用此函数时,我希望能够单击一次文档并执行代码。

问题是,当调用该函数时,它还会立即检测到该单击。那么如何调用该函数以便单击变为启用但仅在我实际再次单击时执行?

3 个答案:

答案 0 :(得分:0)

尝试使用标准的addEventListener:

element.addEventListener('click',doSomething,false)

quirksmode.org

答案 1 :(得分:0)

在调用event.stopPropagation()的点击处理程序中调用reset_all_lightbox_assets()

答案 2 :(得分:0)

  1. 第一次点击:绑定点击处理程序
  2. 第二次点击:取消绑定点击处理程序
  3. 第二次点击:做工作
  4. 第二次点击:取消绑定工作点击处理程序
  5. 代码

    $(document).on("click", function () {  
         // First click do nothing
         // Unbind old click listener
         $(document).unbind('click');
         // Now add your listener
         $(document).on("click", function () {  
              $("#lightbox-asset-wrapdiv .category-asset-div-tileview").css({"background-color": "#f9f9f9"});
              $("#lightbox-asset-wrapdiv .category-asset-table-td-category,#lightbox-asset-wrapdiv .category-asset-table-td-id").css("color", "#777777");
              $("#lightbox-asset-wrapdiv .category-asset-table-td-name").css("color", "#999999");
         });
         // 2nd click listeners unbind
         $(document).unbind('click');
    });