首先,我必须提到我是JavaScript和JQuery世界的新手。我不确定我是否为我的问题写了一个合适的标题,但我会尽力解释我的问题。
场景:我有一个显示其名称的项目列表。单击其中一个项目时,应显示一个弹出窗口并显示该项目的说明。在点击时通过AJAX调用从服务器检索描述。 AJAX调用需要提供项目(在数据库中)的唯一ID。这是我的问题,它有两个部分:
这是项目列表的HTML。如您所见,它说明了我的问题的第1部分(即,不知道如何在HTML中包含ID)。
<ul>
<li class="item">Item1</li> <!-- this item has id=1 in the database -->
<li class="item">Item2</li> <!-- this item has id=2 in the database -->
<li class="item">Item3</li> <!-- this item has id=3 in the database -->
</ul>
下面是将AJAX调用(即getJSON)发送到服务器的JQuery单击事件处理程序。请注意,问题的第2部分由 var item_id = ?? 行说明。请注意, popup 是一个自定义的javascript。
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
$(".item").click(function() {
var item_id = ??
var data = {"item_id":item_id};
$.getJSON("/item/json", data, function(data) {
var name = data[0]["fields"]["name"]
var description = data[0]["fields"]["description"]
popup.call(this, name, description);
});
});
});
</script>
其他信息:对于服务器端,我使用Django 1.3和JQuery 1.5.2作为客户端。 我希望我能清楚地表达我的问题,感谢您的专家提供的任何帮助。感谢。
这是一个类似于我正在寻找的例子 http://esdi.excelsystems.com/iseries400apps/exmain.pgm?wsname=DIALOG.pgm&wsnumb=214&wsprogtype=P
答案 0 :(得分:15)
http://www.w3schools.com/tags/tag_li.asp
&lt; li> tag支持以下标准属性: id 指定元素的唯一ID
在这种情况下使用:
<ul>
<li class="item" id="item_1">Item1</li> <!-- this item has id=1 in the database -->
<li class="item" id="item_2">Item2</li> <!-- this item has id=2 in the database -->
<li class="item" id="item_3">Item3</li> <!-- this item has id=3 in the database -->
</ul>
和
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
$(".item").click(function() {
var item_id = $(this).attr('id').replace('item_','');
var data = {"item_id":item_id};
$.getJSON("/item/json", data, function(data) {
var name = data[0]["fields"]["name"]
var description = data[0]["fields"]["description"]
popup.call(this, name, description);
});
});
});
</script>
答案 1 :(得分:5)
Javascript(特别是jQuery)用于客户端脚本。因此,您需要在HTML文档中提供数据。您可以使用jQuery“Metadata插件来提供项目ID:
<li class="item" data="{ItemID: 'Your_Item_ID'}">Item1</li>
并通过以下方式检索:
var item_id_structure = $(this).metadata().ItemID;
答案 2 :(得分:0)
如果你的项目名称是唯一的,那么通过Ajax发送项目名称。这样你可以避免使用项目ID。
答案 3 :(得分:0)
HTML5本身支持可以使用jquery轻松访问的数据属性
http://api.jquery.com/data/#data-html5
例如,给定以下HTML:
<div data-role="page" data-last-value="43" data-hidden="true" data-options='{"name":"John"}'></div>
1
以下所有jQuery代码都可以使用。
$( "div" ).data( "role" ) === "page";
$( "div" ).data( "lastValue" ) === 43;
$( "div" ).data( "hidden" ) === true;
$( "div" ).data( "options" ).name === "John";