标签: javascript-events

jQuery preventDefault()不起作用

我有以下代码:

$(document).ready(function(){

    $("div.subtab_left li.notebook a").click(function(event) {
    event.preventDefault();
    return false;   
    });

});
Run Code Online (Sandbox Code Playgroud)

但是当我点击元素时......它不会阻止默认操作..为什么?

并在将代码修改为:

$(document).ready(function(){

    $("div.subtab_left li.notebook a").click(function() {
    e.preventDefault();
    alert("asdasdad");
    return false;   
    });

});
Run Code Online (Sandbox Code Playgroud)

它会停止默认操作,但不会发出警报..我在jQuery文档上找不到任何答案.

完整代码如下:

$(document).ready(function(){

$('#tabs div.tab').hide();
$('#tabs div.tab:first').show();
$('#tabs ul li:first').addClass('active');

$('#tabs ul li a').click(function(){
$('#tabs ul li').removeClass('active');
$(this).parent().addClass('active');
var currentTab = $(this).attr('href');
$('#tabs div.tab').hide();
$(currentTab).show();
return false;
});

    $("div.subtab_left li.notebook a").click(function(e) {
    e.preventDefault();
    e.stopPropagation();
    e.stopImmediatePropagation();

    alert("asdasdad");
    return false;

    });

});
Run Code Online (Sandbox Code Playgroud)

而HTML结构是:

<div id="tabs">
<ul id="nav">
<li><a id="tab1" href="#tab-1"></a></li>
<li><a id="tab2" href="#tab-2"></a></li>
<li><a id="tab3" href="#tab-3"></a></li>
<li><a id="tab4" …
Run Code Online (Sandbox Code Playgroud)

jquery event-handling javascript-events

27
推荐指数
2
解决办法
12万
查看次数

即使没有在chrome上移动鼠标,也会触发onmroll上的mousemove事件

我试图回答自定义下拉菜单的问题,但是Chrome和FF中的行为不一致.

演示: http ://jsfiddle.net/fyeht/ [添加滚动事件以获得更清晰]

请参见下图,可以使用箭头键导航列表项.

要重现此问题:

  1. 在Chrome中打开控制台(F12)
  2. 单击列表中的项目(您会注意到在控制台中记录了一些事件)
  3. 使用向下箭头键导航到列表中的下一个项目
  4. 最后,当您到达视图中的最后一个项目并且按下向下箭头时,会注意到该问题.检查日志以查看"滚动","鼠标输入"和"鼠标移动"[查看新演示]

问题是在到达视图中的项目结束后,它会滚动.即使鼠标未受影响,它也会在Chrome中触发mouseenter和触发mousemove事件.在FF中,在滚动时它会触发mouseenter哪个有意义.

在此输入图像描述

问题(S):

  • mousemove鼠标未受影响时为什么会触发?
  • 这只是浏览器的不一致吗?无法找到滚动时触发的事件的文档?(从来不知道它确实如此)

提交了错误报告:https://code.google.com/p/chromium/issues/detail?id = 241476

javascript firefox webkit google-chrome javascript-events

27
推荐指数
2
解决办法
6099
查看次数

捕获使用jQuery执行的任何单击

我想这样做的菜鸟方式

$('*').click(function(){...});
Run Code Online (Sandbox Code Playgroud)

但有没有办法可以捕获任何类型的点击,而无需为DOM中的每个对象注册一个监听器?


帮助会很棒.=)

javascript jquery dom onclick javascript-events

26
推荐指数
2
解决办法
3万
查看次数

成员未找到IE错误(IE 6,7,8,9)

现在让我首先向任何IE用户指出(这不是Chrome,Safari或Firefox中的问题)提示提示;)

所以...我在IE中的工具提示存在问题,我有一个onmouseover监听器,用于所有可以恢复的元素,然后在我的鼠标悬停功能中,我有一个非常基本的跨浏览器声明...

var event = e || window.event,
    el = event.target || event.srcElement;
Run Code Online (Sandbox Code Playgroud)

我一直遇到IE浏览器中不存在的窗口对象的问题,这是一个问题,我添加了一个标志来忽略鼠标悬停从一个元素鼠标悬停到工具提示本身的路上(在允许的时间周期内,300毫秒) .换句话说,该标志是忽略从原始鼠标悬停到工具提示的路径上的鼠标悬停.

所以逻辑看起来像这样......

loadtip.refMouseOver = function (e) {

    var event = e || window.event, el = event.target || event.srcElement;
    //console.log(window); // <-- throws error in IE (Member not found)
    // Reset the lastHoveredRef data.
    tipManager.lastHoveredRef = null;
    tipManager.lastHoveredRef = [el, event];

    // true means there is a tip open still, so if no tip is open.
    if (tipManager.tipState !== true) { 
        tipManager.processTip(el, event);
    } else {        
        return; …
Run Code Online (Sandbox Code Playgroud)

internet-explorer javascript-events

26
推荐指数
1
解决办法
1万
查看次数

如何在textarea上捕获enter keypress而不是shift + enter?

我正在为texarea做这件事.当用户按下时应该调用一个函数Enter,但是当按下Shift+ 时不应该执行任何操作Enter.

我尝试在这里模拟许多IM通信器具有的功能:发送消息,Enter但也使用Shift+ 添加多行Enter.

javascript javascript-events

26
推荐指数
1
解决办法
2万
查看次数

事件是一个全局变量,可以在回调链中的任何地方访问?

我只是在玩DOM和javascript的事件监听器并注意到这一点:

function chained(msg) {
    console.log(msg, event);
}

function onClick() {
    chained('the body was clicked');
}

document.body.addEventListener('click', onClick);
Run Code Online (Sandbox Code Playgroud)

现在有趣的事情......这将输出:

"点击了身体,(MouseEvent)"

然后我问,为什么?如何通过事件对象而不在chained通话中发送它?

function chained(msg) {
    console.log(msg, namedEventObj); //throw error namedEventObj is not defined
}

function onClick(namedEventObj) {
    console.log(event); //outputs (MouseEvent);
    console.log(nameEventObj); //outputs (MouseEvent);
    chained('the body was clicked');
}

document.body.addEventListener('click', onClick);
Run Code Online (Sandbox Code Playgroud)

即使我声明事件obj要传递给onClick函数,因为namedEventObj它只能用于onClick但不能用于chained...我得到了这个,这对我来说很有意义......但绝对不是函数event可用的变量chained.

任何人都知道它为什么会这样?

我唯一能想到的是事件实际上是在window.event事件调度和事件发生时使它自己可用......但这意味着任何元素如果在事件发生的同时被调用就可以获得该事件信息触发?

我使用的是Chrome 11.0.x.

javascript inheritance scope event-handling javascript-events

26
推荐指数
1
解决办法
1万
查看次数

如何在函数运行后等待一段时间

如果我有一个函数,我希望我的js代码立即运行,但运行后,等待2秒.如何实现这个逻辑?

(注意:它只是与逆逻辑比较setTimeout(),因为setTimeout()首先等待一定时间然后执行该函数.)

javascript jquery javascript-events

26
推荐指数
2
解决办法
9万
查看次数

全屏API:触发了哪些事件?

我需要知道当用户通过新的Fullscreen API进入全屏模式时会触发哪些(DOM)事件.我试过这个代码片段,但它没有触发:

jQuery('body').on('fullScreenChange', function() { alert("Fired!"); });
Run Code Online (Sandbox Code Playgroud)

javascript jquery fullscreen javascript-events

26
推荐指数
2
解决办法
4万
查看次数

表单提交时添加addEventListener

这就是我所拥有的,它不起作用.

document.getElementById('form1').addEventListener('submit', function(){
    document.getElementById('donate').style.display = 'none';
    document.getElementById('topMessage').style.display = 'none';
});
Run Code Online (Sandbox Code Playgroud)

javascript控制台显示此错误:

未捕获的TypeError:无法设置未定义的属性"onclick"

任何建议都非常感谢.

javascript javascript-events

26
推荐指数
1
解决办法
7万
查看次数

onFocus和onBlur没有做出反应

我有以下代码

<ElementsBasket name='nextActionDate' 
                      data={this.props.newLead.get('actions').get('nextActionDate')}>
                <div className="form-group">
                <span className="glyphicon glyphicon-calendar">Calendar </span>
                <span className="glyphicon glyphicon-triangle-bottom" ></span>

                  <input type="text" className="form-control" onFocus={this.type='date'} onBlur={this.type='text'}
                       placeholder="Enter your date here." 
                       value={this.props.newLead.get('actions').get('nextActionDate')}
                       onChange={onFieldChanged.bind(this, 'actions.nextActionDate')}
                       />       
                </div>
              </ElementsBasket>
Run Code Online (Sandbox Code Playgroud)

在输入标记中,我正在尝试默认情况下在输入字段中显示占位符文本,并且在单击时我希望将类型更改为日期.问题似乎是当点击chrome上的inspect元素时.它不会显示onFocus和onBlur.

Ps:即使是onClick似乎也有同样的问题

javascript-events reactjs

26
推荐指数
1
解决办法
6万
查看次数