如何在JavaScript onclick调用中发送数据,然后在单击处理函数中访问它?

时间:2012-10-03 01:43:21

标签: javascript jquery javascript-events

这让我陷入了一段时间......我的网络搜索有关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应用程序并将其发送到另一个功能。 谢谢, 布鲁斯

3 个答案:

答案 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。