【问题标题】:Problem passing integer variable into click event in javascript and jquery在javascript和jquery中将整数变量传递给click事件的问题
【发布时间】:2010-08-13 19:28:34
【问题描述】:

这可能很简单,但它让我发疯了。 我正在使用 jquery 和一个 while 循环进行一些分页,该循环有一个名为“pageNum”的变量,该变量在循环结束时更新并表示正在写出的页面。显然 pageNum 是在每次迭代结束时添加的。美好的。 这是让我很难受的代码:

$('#page' + pageNum).click(function(){
                alert(pageNum);
            });

因此,如果 3 是当前 pageNum,则该 id 可以正常工作,甚至会为(例如)id 为 page3 的 span 分配一次点击。问题是,当我单击该跨度时,发出警报的 pageNum 始终是循环中设置的 pageNum 的最后一个值。所以如果有 8 页,它总是会提醒 8。所以,我认为它必须总是拉入当前值,所以我尝试像这样传递 pageNum:

$('#page' + pageNum).click(function(pageNum){
                alert(pageNum);
            });

但现在警报显示 [Object object]。 我尝试在 click 事件内外创建变量,并为它们分配 pageNum 的值,但似乎没有任何效果。 这一定是非常愚蠢的事情,有人可以帮帮我吗?我需要在该点击事件中使用当前 pageNum。 提前感谢您的帮助!

【问题讨论】:

  • 在 jQuery 中,第一个参数总是传递给事件对象。这就是您看到 [Object object] 的原因。因为对象就是事件。

标签: javascript jquery variables scope


【解决方案1】:

不直接引用pageNum变量,而是从各个链接动态获取,例如:

$('#page' + pageNum).click(function(){
   alert(this.id.replace('page',''));
});

或者给他们一个类,比如.pageLink,然后一次性绑定他们,像这样:

$('.pageLink').click(function(){
   alert(this.id.replace('page',''));
});

目前,您正在从循环中引用一个 single pageNum 变量,该变量会发生变化并以循环结束时的任何内容结束。您要么需要在闭包中传递它,要么像上面一样完全忽略它,或者使用传递给.bind() 的事件数据,如下所示:

$('#page' + pageNum).bind({id: pageNum}, 'click', function(e) {
   alert(e.data.id);
});

【讨论】:

  • 由于某种原因,第三个选项不起作用,这更多是我试图弄清楚的,但无论如何我只是使用了你在点击事件中显示的 ID。谢谢!
【解决方案2】:

第三个选项实际上效果很好,Nick 只是将参数混合在一起 - 我最近需要以这种方式使用 bind 来创建一个插件,它非常棒!请参阅下面的修复:

$('#page' + pageNum).bind('click', {id: pageNum}, function(e) {
   alert(e.data.id);
});

jQuery 文档为我清除了它; http://api.jquery.com/bind/

.bind( eventType, [ eventData ], handler(eventObject) )

【讨论】:

    【解决方案3】:
    $('#page' + pageNum).click(function()
    {
      var pageNum = $( this ).attr( 'id' ).match(/page([0-9]*)/)[1];
    
      alert( pageNum );
    });
    

    【讨论】:

      猜你喜欢
      • 2014-01-28
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      • 2014-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多