JQuery点击后执行某些操作...点击后弹出警告

3
我正在使用这段代码:onclick="$('#default').click();" ... 是否有办法在成功完成后返回某些内容的提示?
更新:
这里似乎有一个问题:
onclick="$('#default').click( function() { alert('clicked'); });"

1
你可以使用 .click(function { alert('worked'); })。 - Infra Stank
不确定为什么你要使用那样的代码。使用jQuery,你不再需要在元素中使用onClick方法。如果你正在使用jQuery,你可以使用事件绑定和处理程序从javascript中完成所有操作。 - Thomas Clayson
@Thomas 我猜你是指DOM元素的onclick属性?然而,jQuery并没有什么神奇的地方。它只是包装了普通的addEventListener - Peter-Paul van Gemerden
@Satch3000:你能解释一下你想做什么吗?你想要响应#default被点击吗?在alert()之前应该完成什么才算是“成功完成”呢? - Peter-Paul van Gemerden
1
@PPVG 对不起,我的语法不好。我知道jQuery没有什么“神奇”的地方,但是如果你要使用它,那么在元素中仍然使用onClick就没有什么意义了。像OP中内联代码一样放置代码很难阅读和维护,而且违反了jQuery良好维护的功能分离原则,例如js与html与css等是分开的。 - Thomas Clayson
显示剩余2条评论
4个回答

13

语法有点错误。通常你会像这样使用jQuery的click()

HTML:

<a id="something">Text</a>

JavaScript:

$('#something').click( function() { alert('clicked'); });

更新:

即使您的更新代码似乎可以工作,但像那样非常糟糕的代码-您可能在其他地方的javascript或DOM结构中有一些错误。请参见http://jsfiddle.net/HCQeN/1/

最好将jquery与onclick分离,例如:http://jsfiddle.net/ctUgp/


1
除非“#default”是另一个元素,他想在单击原始元素时触发单击的元素。 - nav
即使如此,仍然没有理由不使用纯jQuery,而是将JavaScript放在元素的onClick属性中。 - Thomas Clayson
@Thomas:你想表达什么?你的陈述含糊不清。如果使用jQuery是A,使用纯JS是B,你是在说¬(¬A ∧ ¬B)还是指¬(¬A) ∧ ¬B?后者更有意义,但我仍然不明白你的观点。 - Peter-Paul van Gemerden
有些困惑 @PPvG。@kontur 似乎在其他评论和答案中也在说我所说的话,即他会将元素与 jQuery 分离,并使用 jQuery 中的事件处理程序来捕获 onClick 事件。Nav 在他的评论中提出了质疑。我只是指出,即使 OP 想要触发另一个元素的点击事件,仍然可以使用独立于 onclick 属性的 jQuery 来实现这一点。 - Thomas Clayson
@Thomas,@nav所指的是通过调用.click()而不带任何参数来触发另一个元素上的click事件被触发。这是一个有效的评论,但由于OP更新了他们的问题,因此不再相关。 - Peter-Paul van Gemerden

3
假设您的示例是:
<input type="button" id="myButton" onClick="$('#default').click()" />

你需要的是:

您需要:

<input type="button" id="myButton" />

<script type="text/javascript">

$(document).ready(function(){
  // this code will run when the document has loaded
  // and all elements are in place

  $("#myButton").click(function(){
    // this code will be run when the user clicks on
    // the button we created above

    $('#default').click(); // this calls the click event on #default

    alert('Finished'); // now it is finished
  }); // close the click handler on #myButton

  $('#default').click(function(){
    // this code will be run when the user click on
    // the element with id "default" OR (in this case)
    // when the click event is triggered from clicking the
    // button above.

    alert('#default was clicked');
  }); // close the click handler on #default

}); // close the document.ready code block.

</script>

我想在onclick中内联执行此操作,以便涉及的代码更少。 - Satch3000
1
我理解。但是这样做是不好的实践。最好将JavaScript和HTML代码分开。这样更容易维护,调试也更简单。个人认为最好使用更多的代码,这样你就有一个易于维护和构建的东西。请参见http://jsfiddle.net/JQrNv/ <--它并没有真正增加太多代码。 - Thomas Clayson

2

就像这样

$('#default').click( function() {
  alert('Handler for .click() called.');
} );

1

尝试:

onclick="$('#default').click(function() { alert('foobar'); });"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接