jquery';s.click()不';不行?

jquery';s.click()不';不行?,jquery,Jquery,当有 <a href="javascript:onclick:alert('hi')"> click </a>. 。 为什么$('a')。单击()不会弹出警报?它不起作用的原因是,您没有正确附加click事件,而是通过将其放入href值中进行了黑客攻击。将其链接到#或真正的url,永远不要将JS内联放置。然后从外部附加事件处理程序: $('a').click(function(e) { e.preventDefault() alert('hi')' }

当有

<a href="javascript:onclick:alert('hi')"> click </a>.

为什么
$('a')。单击()
不会弹出警报?

它不起作用的原因是,您没有正确附加click事件,而是通过将其放入href值中进行了黑客攻击。将其链接到#或真正的url,永远不要将JS内联放置。然后从外部附加事件处理程序:

$('a').click(function(e) {
    e.preventDefault()
    alert('hi')'
});

然后使用
.trigger('click')
触发,如果您需要手动执行此操作。

您是在锚中使用普通javascript还是使用jquery。如果要使用jquery,请执行以下操作:

$('a').click(function (e) {
   e.preventDefault(); 
   alert('hi');
}); 

。。并将href=“”中的代码删除为其他内容,如a href=“#”

问题在于您的href代码。有两种方法可以在用户单击链接调用时使其成为javascript函数:

<a href="javascript:alert('hi');">click</a>
<a href="" onclick="alert('hi');">click</a>


现在您可以使用jquery代码单击链接。

我想这就是您想要的:

<a href="#" onclick="alert('hi')"> click </a>

无法触发单击事件的原因是您没有设置任何单击事件

代码中的
onclick:
onclick
事件无关,它只是一个标签。把它命名为一个事件并不会使任何特别的事情发生

因此,您的代码相当于:

<a href="javascript:alert('hi')"> click </a>

如果需要事件,请使用onclick属性:

<a href="somepage.html" onclick="alert('hi');"> click </a>

有一种方法可以使点击触发器与href一起工作。必须使用事件目标将window.location调用绑定到click事件。这将导致触发任何onclick操作,后跟href目标。像这样:

$("a").click(function(event) {
    window.location = event.target.href;
});

$("a").trigger("click");

有些情况下,您无法将操作从
href
移动到
onclick
。(如ASP.NET回发链接按钮) 我在下面编写了
href
动作感知函数,以在这种情况下触发单击:

function triggerClickEvent(element) {
    var e = $(element).click();
    if (e.attr('href').indexOf('javascript:') === 0)
        eval(e.attr('href').replace('javascript:', ''));
}

我发现这个问题的解决方案是通过链接导入JQuery,而不是将它放在本地主机上。我用的是Kohana,神奇的是它也用了。

你是说onclick吗?onclick有什么问题?它是一个内联事件处理程序,最好将内容、表现和行为(网页设计的三脚凳)分开。是的。为什么它对我不起作用?另外,当确实存在href URL时,为什么.trigger('click')不让浏览器导航?为什么不能在外部附加事件处理程序,如yoda和我的答案所示?不推荐使用内联事件处理程序。meder,我需要直接“单击”元素。例如,我做了这个$('a')。触发器('click');“>单击我什么都没发生……我需要按字面意思“单击”一个元素。例如,我做了这个$('a')。触发('click');什么都没发生这不会第一次修复双击。
function triggerClickEvent(element) {
    var e = $(element).click();
    if (e.attr('href').indexOf('javascript:') === 0)
        eval(e.attr('href').replace('javascript:', ''));
}