2014-04-04 232 views
-2

在我的菜单栏中,单击“MENU”打开一个JavaScript应用程序。在某些情况下,我想阻止它打开应用程序,并在点击页面顶部显示警报条。 似乎任何事情都可以正常工作,除非我无法捕捉点击事件...无法触发点击事件

JS onckick()和jQuery click()都会失败。 这是我的代码目前简单的结构。

<body> 
    if ($condition){ 
     do sth 
    }else{ 
     echo ("<li><a href=\"#\" id=\"ide-selector\" title=\"" $viewer_title . "\">".MENU."</a></li>"); 
    } 
      . 
      . 
      . 

    <?php 
    switch (false){ 
    case(blah): 
    ?> 
     <script> 
      blah blah   
     </script> 
    <?php 
    break; 
    ?> 
    case($condition): 
    ?> 
     <script> 
     if(jQuery($('#id-selector').click())){   
      blah blah 
     }    
     </script> 
    <?php  
    break; 
    } ?>   

</body> 

的onclick版本:

<body> 
    <script language="JavaScript" type="text/javascript"> 
     var has_been_clicked = false; 
     function clicked(){ 
      has_been_clicked = true; 
      return has_been_clicked; 
     } 
    </script> 
      . 
      . 
      . 
      }else{ 
       echo ("<li><a href=\"#\" id=\"ide-selector\" onclick=\"clicked();\" title=\"" . $viewer_title . "\">".MENU."</a></li>"); 
      } 
      . 
      . 
      . 
      case($condition): 
      ?> 
       <script> 
        if(has_been_clicked === true){   
         blah blah 
        }    
       </script> 
      <?php   
      break; 
      . 
      . 
      . 

在此先感谢。

+0

错字:'ide-selector',不是'id-selector' – CodingIntrigue

回答

0

更换

<script> 

    if(jQuery($('#id-selector').click())){   
     blah blah 
    }    
    </script> 

<script> 
     $(function() { 
      $('#ide-selector').click(function() { 
       //   blah blah 
      }); 
     });  
</script> 

此外,ID不存在,它可能是一个错字。你有一个ID为ide-selector

+0

@Rraham这句话让我很困惑。您必须事先绑定事件才能触发它。否则什么都不会发生。 – War10ck

+0

已更新 – Smeegs

+0

@ War10ck如果*另一个*脚本绑定了一个事件并且*您想触发它,则不会如此 – CodingIntrigue

-2

嗯,对于一个,它是内联代码...这本身就是坏的。我也会将条件改为jQueryObject.on('click',function(){//在这里做你的东西。}另外我会把你所有的JavaScript移动到一个外部文件中 谢谢Chris。

+0

而不是评论你自己的帖子,你可以编辑它来进行更改。 – Chris

0

在你的第一个代码块,你永远不会定义和绑定一个事件(你可能已经在另一个文件中完成了这项工作,如果这样做不理会定义事件并直接触发它)。事件触发时没有任何事情需要执行。火,但你首先需要定义一个函数来火

定义事件:

$('#ide-selector').on('click', function (evt) { 
    // You'll probably want to prevent the default 
    // action since the element is an anchor tag 
    // by doing evt.preventDefault(); 

    // Place the code to execute here. 
}); 

如果放置在<a>标签上方,则需要将其包装在$(document).ready(function() { // Call code here });块中。

触发:

一旦事件被定义,就可以触发它就像你有以上$('#ide-selector').click();。你上面的代码的问题是选择器是错误的。 $('#id-selector')应该是$('#ide-selector')

参照您的第二个代码块,您可以定义该事件,并使用本机onclick=""将其绑定,但您从不触发它。触发该事件,它应该可以正常工作。