无法触发点击事件

时间:2014-04-04 14:24:19

标签: javascript jquery

在我的菜单栏中,点击“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;  
            .
            .
            .   

提前致谢。

3 个答案:

答案 0 :(得分:0)

替换

<script>

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

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

此外,id不存在,可能是拼写错误。你有一个标识为ide-selector

的元素

答案 1 :(得分:0)

在你的第一个代码块中,你永远不会定义和绑定一个click事件(你可能已经在另一个文件中完成了这个。如果是这样,请忽略定义事件并直接触发它。)没有什么可以执行的当事件被触发时。点击事件将触发,但您首先需要定义要触发的函数。

定义活动:

$('#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=""绑定它,但是您永远不会触发它。触发该事件,它应该可以正常工作。

答案 2 :(得分:-2)

对于一个人而言,它是内联代码......这本身就很糟糕。我还要将条件更改为jQueryObject.on(&#39;单击&#39;,function(){//在这里做你的东西。}此外,我会将所有JavaScript移动到外部文件。 谢谢Chris。