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