标签: javascript-events

循环中的addEventHandler()具有意外结果

我不确定要寻找什么,所以我在这个主题上找不到任何先前的问题,谷歌也没有多少帮助.

(function() {
    var element = function(str) {
        return document.getElementById(str);
        },

        parent = document.getElementsByTagName('ul')[0].getElementsByTagName('li'),
        len = parent.length,

        slides = slides || [];

    for (var i=0; i<len; i++) {
        var link = parent[i].getElementsByTagName('a')[0],
            slide = element(parent[i].getElementsByTagName('a')[0].getAttribute('href').substr(1));


        if (addEventListener) {
            link.addEventListener('click', function(event){
                event.preventDefault();
                alert(slide.getAttribute('id'));
            });
        } else if (attachEvent) {

        }
    }

})();
Run Code Online (Sandbox Code Playgroud)

因此,在上面的代码中,在for循环中,我将一个事件附加到所有链接(其中五个),这些链接应该警告他们指向的幻灯片的ID(仅用于调试目的),但是它们都显示了最后一张幻灯片的ID.我还创建了一个jsFiddle供你查看...动作.

我假设我搞砸了比较简单的东西,我只是弄不清楚是什么.

javascript javascript-events

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

JQuery - 每2秒点击一次按钮

基本上我有一个刷新按钮,当用户点击它调用Web服务的刷新按钮时,获取数据并刷新div容器以显示新数据.

但我想更新div容器而无需用户单击刷新按钮....

如何让jquery每2秒点击一次我的按钮,而不刷新整个页面?或者有更好的方法吗?

jquery web-services javascript-events partial-page-refresh

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

网页:检测并阻止某些键盘快捷键

我想检测并阻止网页上的某些键盘快捷键.例如,假设我想阻止alt-tab切换应用程序(只是一个例子,假设任何全局快捷方式)

据我所知,这是:

  • 将键盘事件监听器附加到 document(或window?)
  • 用于event.which检查按下了哪个组合键
  • 如果它是列入黑名单的快捷方式,请停止浏览器执行它

但是,我不知道如何
A)检测多个键(例如alt和tab一起),或者
B)阻止它们执行(我可以return false吗?).

谁能告诉我如何完成上述工作?
谢谢!

html javascript keyboard-shortcuts javascript-events

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

在.load()调用之后,jQuery通过ID访问元素

$(document).ready(function() {
    $("img.tile").click(function() {
    var actid = $(this).data().id;
    $("#lz").load("/dialog/pre?actid=" + actid);
    $("#btnCheck").click(function() {
        alert("test");
    });
});
Run Code Online (Sandbox Code Playgroud)

load()调用带来一个HTML片段,<input id="btnCheck" value="Check" /> 但是当我点击它时事件不会触发.必须与片段的加载方式有关.你是如何做到这一点的?

javascript jquery javascript-events

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

使用Google Closure Library阻止事件传播

使用Google Closure库:

如何处理单击element例如a div但阻止event handler在用户单击该元素的子元素时触发.

例如,在下面的代码中我想触发event handler用户单击时,div1但是当他/她单击"span1"时,我希望event handler在不触发处理程序的情况下调用另一个div1.

<div style="width: 400px" id="div1">
 <span id="span1">click me to reload</span>
 click here to Toggle accordion
</div>
Run Code Online (Sandbox Code Playgroud)

UPDATE

JS代码:

/**** accordion ***/
var panels = goog.dom.getElementsByClass('newsColumnHeader', goog.dom.getElement('accordionContainer'));

var anims  = {};
var open   = null;

goog.array.forEach(panels, function(pane){
  var animation = new goog.ui.AnimatedZippy(pane, goog.dom.getNextElementSibling(pane));
  goog.events.listen(animation, goog.ui.Zippy.Events.TOGGLE, zippyToggle);
  anims[goog.getUid(animation)] = animation;
});

function zippyToggle(event) {      
  var uid = goog.getUid(event.target);                  
  // simple …
Run Code Online (Sandbox Code Playgroud)

javascript events javascript-events google-closure google-closure-library

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

定义回调并立即触发它的最佳方法是什么?

在jQuery中,我做了很多这样的事情:

$('#myId').bind('myevent', function() { ... }).trigger('myevent');
Run Code Online (Sandbox Code Playgroud)

当选择器只找到一个元素时工作得很好,但如果有多个匹配,我不希望它多次触发.

有没有办法基本上声明一个匿名函数并一次性执行一次?

或者你必须使它成为非匿名(给它一个名字),传递它,并手动调用它一次?


例如,我可能将.change事件绑定到单选按钮集.在回调中,我检查实际设置了哪一个,然后显示/隐藏div.当页面加载时,div需要处于正确的状态,所以我触发事件一次,让JS弄清楚它是否应该显示.但我真的不想要它发射3次,因为我有3个单选按钮.

javascript javascript-events

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

事件在IE onclick和onsubmit中触发两次

我有一个页面有2个文本框和2个按钮和2个表单来包装文本框和按钮对.当用户键入内容并单击或提交输入时,事件将被发送两次,这仅在IE中发生.基于触发集成层的事件,请求被发送两次.这不应该发生.我真的无法在javascript代码中看到请求被发送两次(我试图sysout请求但它只打印一次).我真的看不到事件发生两次,我怎么能看到事件发生两次.

<script language="javascript" type="text/javascript"> 

function grabKeyword(){
   var search=document.getElementById('search_box_second').value;
   search=encodeSearch(search);
   document.forms['Form1'].Term.value = search;
   document.forms['Form1'].submit();
   }

function submitSecondSearch(e)
{

if(window.event)
      keycode = window.event.keyCode; // IE
else           
      keycode = e.which;


if (keycode == 13)
   {
  grabKeyword();
   }
else
   {
   return true;
   }
}

</script>

<form action="/" style="" method="post" name="Form1" id="Form1">
<input id="search_box_second" class="search_results_input" type="text"  onKeyDown="submitSecondSearch(event)" /></span>
      <span style="float:right"><input type="image" src="images/bttn_search_result.png" value="submit" onClick="grabKeyword()" /></span>

<input type="hidden" name="page" value="Page" />
 <input type="hidden" name="action" value="action" />
 <input type="hidden" name="Term" value="" />
</form>

This is …
Run Code Online (Sandbox Code Playgroud)

javascript internet-explorer javascript-events

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

绑定就绪功能并调整事件大小

在jQuery中,是否有可能以某种方式将一个动作"绑定"到ready函数和resize事件?我正在尝试在resize上添加/删除类,我希望初始类状态准备就绪.

javascript jquery events bind javascript-events

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

我想在窗口卸载时调用函数

我正在尝试使用window.confirm在窗口卸载事件上显示确认框,

如果用户点击确认框上的确定按钮,我想调用一个功能,如果用户点击取消按钮,那么窗口应该关闭.

我的代码是:

<script>
        function confirmit(){
                var result=window.confirm("Are you sure?");
                if(result) {
                    // close all child windows
                } else{
                    // window should not get close
                }
            }
</script>
<body onunload='confirmit();' >
Run Code Online (Sandbox Code Playgroud)

但问题是,如果我点击取消按钮,窗口就会越来越近.

请帮我.

谢谢

html javascript jquery events javascript-events

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

用于关闭浏览器FireFox/chrome/IE的JavaScript/jquery

我需要用于关闭浏览器的JavaScript/jquery代码(FireFox/Chrome和IE ..)

正如我尝试使用 window.close()

但它只适用于IE.

还有其他方式..?

javascript jquery javascript-events

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