在我的菜单栏中,点击“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 :(得分: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。