为什么此代码在“click”事件之前运行?

时间:2010-08-03 15:03:33

标签: jquery

我有一个似乎是一个简单的问题。我有一个在页面加载时运行的jquery函数,尽管我特意将它设置为在特定元素上的'click'事件之后运行。

这是功能:

    $('#boxShow').click(function() {
      $('#colorBox').animate({
        height: 'toggle'
      }, 400, function() {
        // Code that will run after the click
      });
    });

有没有办法阻止此代码在“click”事件之前运行?谢谢!

修改

完整的jquery代码:

$(document).ready(function() {  

    $("#accordion").accordion({
        event: "click"
    });

    $("#TagsSelectBox").multiSelect({ 
        minWidth:130,
        selectedList:5,
        showHeader:false
    });

    $('#boxShow').click(function() {
        $('#colorBox').animate({
        height: 'toggle'
        }, 400, function() {
            // Animation complete.
        });
    });

    $('#test').colorPicker({            
        defaultColor: 0, // index of the default color (optional)
        columns: 13,     // number of columns (optional)  
        click:function(c){
        $('#boxShow').css("background-color",c);
      } 
    });
});

修改 以防万一有人想知道,这是最后一个版本,经过一些调整,使其足够通用,可用于多个'颜色可选“项目:

Final Version

如果您想自己尝试一下,可以从syronex网站下载颜色选择器插件。链接在评论中!

感谢所有帮助我实现这一目标的人!

2 个答案:

答案 0 :(得分:2)

如果我不得不猜测我不确定你的colorpicker插件是什么,那么我会说尝试注释掉点击该控件的行,因为它可能会启动点击该控件

$('#test').colorPicker({             
    defaultColor: 0, // index of the default color (optional) 
    columns: 13,     // number of columns (optional)   
    //click:function(c){ 
    //$('#boxShow').css("background-color",c); 
  //}  
}); 

由于您的所有代码似乎都是 divs ,请尝试将点击事件功能更改为此

$('div').click(function(e) { 
  var $target = $(e.target); 

  if ($target.is('#boxShow')) { 
       $('#colorBox').animate({ 
        height: 'toggle' 
        }, 400, function() { 
        // Code that will run after the click 
      }); 

  } else { 
    // do actions for a click anywhere else inside div
    e.preventDefault(); 
  } 
}); 

如果可以,那么您发布的代码就会出现其他问题。

答案 1 :(得分:0)

猜测你的意思是查询没有得到任何元素,因此无效。

您需要将其放在文档就绪处理程序中,以便在文档加载后调用它。

$(document).ready(function(){
    $('#boxShow').click(function() {
      $('#colorBox').animate({
        height: 'toggle'
      }, 400, function() {
        // Code that will run after the click
      });
    });
});