如何将变量传递给JQuery中的函数

时间:2015-12-07 04:46:01

标签: javascript jquery

我有这样的事情:

for (var i = 1; i <= numPages; i++)
{                      
    buttons.append($("<button onclick='getJSON(i)'>"+i+"</button>"));
}

现在,在getJSON()函数中传递i似乎不起作用 任何想法如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

其他回答者已经描述了你如何做到这一点 但是,我会建议另一种方式:

for (var i=1; i<=numPages;i++)
{          
    $("<button/>")
        .addClass('myClass')
        .attr('data-my-id', i)
        .text(i)
        .appendTo(buttons);
}

$(document).on('click', '.myClass', function() {
    getJSON($(this).attr('data-my-id'));
});

它将生成以下HTML:

<button class='myClass' data-my-id='1'>1</button>
<button class='myClass' data-my-id='2'>2</button>
<button class='myClass' data-my-id='3'>3</button>
<button class='myClass' data-my-id='4'>4</button>
etc.

为什么这种方法更好?

  • 现在使用jQuery生成Button,但不是从字符串生成,这样可以减少出错的可能性
  • 它使用jQuery事件而不是onclick属性
  • 使用动态创建的元素方便工作的事件委派
  • 元素HTML不包含行为(事件) - 它存储数据(id)

jQuery比本机JavaScript慢,但只有当我们谈论数千个元素时才重要。否则,更容易编写,读取和支持代码。

此外,这是一篇很好的文章,描述了为什么你不应该使用onclick属性`:
jQuery.click() vs onClick

答案 1 :(得分:1)

buttons.append($("<button onclick='getJSON("+i+")'>"+i+"</button>"));

你需要连接正确,就像你对另一个i

所做的那样

答案 2 :(得分:-1)

将i作为变量传递给getJSON方法。你错误地把它作为一个字符串发送了。

 for (var i=1;i<=numPages;i++)
 {          

    buttons.append($("<button onclick='getJSON("+i+")'>"+i+"</button>"));

 }