1

如果这是一个愚蠢的问题或者没有任何意义,请原谅这里的超级菜鸟。

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

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 

其中“纪录片”和“奇幻”是流派名称。

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

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

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

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

4

3 回答 3

3

您需要转义'您的流派名称,因为您想将其作为字符串发送。试试这个

$('#genreList').append('<li><a href="#" onclick="searchGenres(\'' + genreName + '\');return false"><span>' + genreName + '</span></a></li>');
于 2013-01-04T12:12:33.097 回答
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>
于 2013-01-04T12:14:47.560 回答
0

您的 html 正在创建为

searchGenres(奇幻)或 searchGenres(纪录片)

等等。您想要的是那些以字符串形式发送的参数。你可以改变你的代码看起来像

... 搜索流派(\'' + 流派名称 + '\') ....

请注意 ' 之一之前的转义。这将产生

searchGenres('Fantasy') 或 searchGenres('Documentary') 等等

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

于 2013-01-04T12:16:13.737 回答