这让我困了一段时间。我在网上搜索onclick JavaScript调用时,有时会用大写的C,比如在onclick中,有时会用大写字母onClick。我的代码是JQuery移动应用程序的一部分,但onclick是JS。因此,它看起来是这样的:
domEntry = '<li><a href="#poet-details"';
domEntry += ' onclick="getPoetDetails('+ poet_name + ')">';
domEntry += poet_name;
domEntry += '</a></li>';
我将把它添加到一个div中。‘第三行的poet_name显示正确。如何在getPoetDetails中访问它?我说得对吗?另外,请参阅:http://jsfiddle.net/brucewhealton/XF5AJ/
可以在给定的链接中看到函数getPoetDetails。我要通过事件对象变量来访问它吗?应用程序将查询字符串发送到另一个位置dbpedia.org/sparql,然后返回JSON。我需要第二个查询的poet_selected或poet_name来获取诗人的详细信息,因为我的应用程序到目前为止只列出了诗人,并不是很有趣。我想弄清楚这个问题,这样我就可以通过让用户从DBpedia.org上的"Poets_by_nationality“类别中选择国籍来启动我的应用程序。我的问题是捕获用户的选择,他们在JQuery移动应用程序中点击或点击的内容,并将其发送到另一个功能。谢谢,布鲁斯
发布于 2012-10-05 02:26:28
所以你在诗人名字的锚标签的onClick上遇到了麻烦?我认为最好的方法是不使用任何内联javascript。这样,当您准备好在窗口中启动javascript时,或者以您选择的方式启动它时,您应该添加下面这一小行
$('#result').delegate('a', 'click', getPoetDetails);
这将告诉jQuery查看#result的内部,并且每当有新的锚标记时,就将这个单击事件应用于它。单击事件应该调用getPoetDetails。
现在,在创建和插入锚点标记时,应该去掉javascript内容,而使用以下代码
domEntry = '<li><a href="#poet-details"';
domEntry += 'data-name="'+ poet_name + '">';
domEntry += poet_name;
domEntry += '</a></li>';
这为锚点提供了一个名称数据值和诗人姓名的值。现在,您可以在getPoetDetails函数中使用jQuery来获取此数据。它现在可以这样开始,并保持其余部分不变。
var getPoetDetails = function(){
var poet_name_selected = $(this).data('name');
// show loader
我非常确定您要么在调用获取json数据时做错了什么,要么解析错了,但现在至少名称被getPoetDetails正确地获取了。为了将其显示为在jsfiddle中工作,您需要将onLoad下拉列表更改为noWrap body,因为您已经在js中准备好了文档。
我希望这能帮到你。
发布于 2012-10-03 09:55:28
如果poet_name
是一个字符串,那么它应该用引号括起来:
domEntry += ' onclick="getPoetDetails(\''+ poet_name + '\')">';
因此,生成的HTML将如下所示:
onclick="getPoetDetails('Henry Abbey')"
此外,您还需要从getPoetDetails
设置中选择'no wrap‘而不是'onLoad’,以使函数jsfiddle成为全局函数。
编辑:这是另一种方法:
domEntry = '<li><a href="#poet-details" class="poet">';
domEntry += poet_name;
domEntry += '</a></li>';
然后在循环之后:
$('.poet').click(function() {
getPoetDetails($(this).text());
});
发布于 2012-10-03 09:50:09
如果我正确理解了您的问题,在声明的getPoetDetails( poet_name_selected )函数中,poet_name_selected将为poet_name。
https://stackoverflow.com/questions/12700865
复制相似问题