jquery使用onclick函数动态地将项添加到li

时间:2013-01-04 12:10:14

标签: jquery

Mega noob在这里请原谅我这是一个愚蠢的问题还是没有任何意义。

我有一个li列表,我是从mySQL数据库动态创建的。这个代码如下所示:

var resultCount = 0;
var mxKey = $.now();

$.get("\\php\\phpGenre.php?mxKey"+mxKey, function(genreData){

    jsonResults = JSON.parse(genreData);

    while (resultCount<jsonResults.length){
        var genreName = jsonResults[resultCount]['genre_name'];
            $('#genreList').append('<li><a href="#" onclick="searchGenres(' + genreName + ');return false"><span>' + genreName + '</span></a></li>');
                resultCount++;
    }

});

当我创建列表时,我还需要能够添加一个调用函数的onClick事件...此函数使用列表名作为值,并通过变量genreName生成。我的列表创建正常,但onClick事件不起作用并继续返回:

SCRIPT5009: 'Documentary' is undefined

或另一个例子是:

SCRIPT5009: 'Fantasy' is undefined 

其中'纪录片'和'幻想'是genreName。

所以我的问题是如何在每个列表项中包含一个onClick事件,该事件将使用genreName作为值?

如果我对列表进行硬编码,则可以正常工作:

<ul><li><a href="#" onclick="searchGenres('action');return false"><span>Still To Do...</span></a></li></ul>

谢谢....再次为我糟糕的编码知识而感到抱歉。

3 个答案:

答案 0 :(得分:3)

你需要逃避'你的genrename,因为你想把它作为字符串发送。  试试这个

$('#genreList').append('<li><a href="#" onclick="searchGenres(\'' + genreName + '\');return false"><span>' + genreName + '</span></a></li>');

答案 1 :(得分:1)

试试这个:

$('#genreList').append('<li><a href="#" onclick="searchGenres(\'' + genreName + '\');return false"><span>' + genreName + '</span></a></li>');

这将生成输出:

<li><a href="#" onclick="searchGenres('action');return false"><span>action</span></a></li> 

而您的代码生成:

<li><a href="#" onclick="searchGenres(action);return false"><span>action</span></a></li>

答案 2 :(得分:0)

您的html正在创建为

searchGenres(Fantasy)或searchGenres(纪录片)

等等。你想要的是那些作为字符串发送的参数。您可以将代码更改为

... searchGenres(\''+ genreName +'\')....

注意其中一个'之前的逃脱。这将生成

searchGenres('Fantasy')或searchGenres('纪录片')等等

IMO,更好的选择是在创建html后使用jQuery函数向字段添加事件。见http://api.jquery.com/delegate/