我的JavaScript中有一个计时器,需要模拟点击一个链接,一旦时间流逝就转到另一个页面.要做到这一点,我正在使用jQuery的click()功能.我已经使用$().trigger()和window.location也,我可以作出打算与所有三个它的工作.
我观察到一些奇怪的行为,click()我试图了解发生了什么以及为什么.
我正在使用Firefox来解决这个问题,但我也对其他浏览器会对此做些什么感兴趣.
如果我没有使用$('a').bind('click',fn)或$('a').click(fn)设置事件处理程序,那么调用$('a').click()似乎什么都不做.它不会为此事件调用浏览器的默认处理程序,因为浏览器不会加载新页面.
但是,如果我首先设置一个事件处理程序,那么即使事件处理程序什么都不做,它也会按预期工作.
$('a').click(function(){return true;}).click();
Run Code Online (Sandbox Code Playgroud)
这会加载新页面,就像我自己点击了一样.
所以我的问题是双重的:这种奇怪的行为是因为我在某处做错了吗?click()如果我没有创建自己的处理程序,为什么调用对默认行为不起作用?
编辑:
当霍夫曼确定他试图复制我的结果时,我上面描述的结果实际上并没有发生.我不确定是什么原因引起了我昨天观察到的事件,但我今天肯定这不是我在问题中所描述的.
所以答案是你不能在浏览器中"伪造"点击并且所有jQuery都会调用你的事件处理程序.您仍然可以使用window.location更改页面,这对我来说很好.
我正在寻找一些关于如何在jquery中以最佳方式实现自定义事件处理的输入.我知道如何从像'click'等dom元素中挂接事件,但我正在构建一个小的javascript库/插件来处理一些预览功能.
我有一个脚本运行来更新dom元素中的一些文本来自我得到的一组规则和数据/用户输入,但现在我需要在该脚本不可能知道的其他元素中显示的相同文本.我需要的是一个好的模式,以某种方式观察这个脚本产生所需的文本.
那我该怎么做?我是否忽略了jquery中的一些内置功能来提升/处理用户事件,还是需要一些jquery插件才能做到这一点?您认为处理此问题的最佳方法/插件是什么?
假设我将一个blur函数附加到HTML输入框,如下所示:
<input id="myInput" onblur="function() { ... }"></input>
Run Code Online (Sandbox Code Playgroud)
有没有办法blur在函数内部获取导致事件触发的元素的ID (被点击的元素)?怎么样?
例如,假设我有这样的跨度:
<span id="mySpan">Hello World</span>
Run Code Online (Sandbox Code Playgroud)
如果我在输入元素具有焦点后立即单击跨度,则输入元素将失去焦点.该功能如何知道它mySpan被点击了?
PS:如果跨度的onclick事件发生在输入元素的onblur事件之前,我的问题就会解决,因为我可以设置一些状态值,表明已经点击了一个特定的元素.
PPS:这个问题的背景是我想在外部触发一个AJAX自动完成控件(来自可点击元素)来显示其建议,而不会因为blur输入元素上的事件而立即消失.所以我想检查blur函数是否单击了一个特定元素,如果是,则忽略blur事件.
我有一个复选框,我想对click事件执行一些Ajax操作,但是复选框也在一个容器内,它有自己的点击行为,当我点击复选框时我不想运行它.此示例说明了我想要做的事情:
$(document).ready(function() {
$('#container').addClass('hidden');
$('#header').click(function() {
if ($('#container').hasClass('hidden')) {
$('#container').removeClass('hidden');
} else {
$('#container').addClass('hidden');
}
});
$('#header input[type=checkbox]').click(function(event) {
// Do something
});
});Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚如何停止事件冒泡而不会导致默认点击行为(复选框变为选中/取消选中)不运行.
以下两个都会停止事件冒泡,但也不会更改复选框状态:
#container.hidden #body {
display: none;
}Run Code Online (Sandbox Code Playgroud) 在新的Angular2框架中,有没有人知道像事件一样悬停的正确方法?
在Angular1中有ng-Mouseover,但似乎没有结转.
我查看了文档但没有找到任何内容.
假设我有一个Web应用程序,其中有一个页面可能包含4个脚本块 - 我写的脚本可以在其中一个块中找到,但我不知道哪个是由控制器处理的.
我将一些onclick事件绑定到一个按钮,但我发现它们有时按照我没想到的顺序执行.
有没有办法确保订单,或者你过去如何处理这个问题?
我正试图在网页上叠加一个元素(以绘制任意图形),我已经到了可以将其堆叠在一切元素之上的点,但是这可以防止用户点击任何链接/按钮/等.有没有办法让它的内容浮在一切之上(它是半透明的,所以你仍然可以看到背后的东西)并让用户与它下面的层进行交互?
我已经找到了很多有关DOM事件模型的信息,但没有一个解决了按钮和其他"本机"控件似乎从来没有获得点击的问题.
我有一个函数,我想在加载页面内容后调用.我读到了$ viewContentLoaded,它对我不起作用.我正在寻找类似的东西
document.addEventListener('DOMContentLoaded', function () {
//Content goes here
}, false);
Run Code Online (Sandbox Code Playgroud)
以上调用在AngularJs控制器中对我不起作用.
我想在文档加载后调用函数,但文档可能已经或可能尚未完成加载.如果它加载了,那么我可以调用该函数.如果它没有加载,那么我可以附加一个事件监听器.我无法在onload已经触发后添加一个eventlistener,因为它不会被调用.那么如何检查文档是否已加载?我尝试了下面的代码,但它并不完全有用.有任何想法吗?
var body = document.getElementsByTagName('BODY')[0];
// CONDITION DOES NOT WORK
if (body && body.readyState == 'loaded') {
DoStuffFunction();
} else {
// CODE BELOW WORKS
if (window.addEventListener) {
window.addEventListener('load', DoStuffFunction, false);
} else {
window.attachEvent('onload', DoStuffFunction);
}
}
Run Code Online (Sandbox Code Playgroud) 当用户更改页面中的缩放时,是否可以使用JavaScript检测?我只是想捕捉一个"缩放"事件并对其做出响应(类似于window.onresize事件).
谢谢.