我需要获取长列表中特定点击链接的 datahours 等。我错过了什么?
HTML:
<ul>
<li><a href="#" class="item" title="Gallery" datakey="1" datatitle="A+D Gallery" dataaddress="123 Main St" datahours="10:00, 10:30, 11:00, 11:30, 1:00">Gallery</a></li>
<li><a href="#" class="item" title="Radio" datakey="2" datatitle="Radio" dataaddy="321 Center Dr" datahours="11:00, 11:30, 12:00, 12:30, 1:00, 1:30, 2:00, 2:30">Radio</a></li></ul>
JS:
$(function() {
var datakey = $(".item").attr("datakey");
var datatitle = $(".item").attr("datatitle");
var dataaddress = $(".item").attr("dataaddress");
var datahours = $(".item").attr("datahours");
$(this).click(function(){
// CONSOLE
console.log(datakey);
});
}) // DOM Ready
答案 0 :(得分:5)
我们如何以jQuery方式执行此操作。
<ul id="items">
<li><a href="#" class="item" title="Gallery" data-key="1" data-title="A+D Gallery" data-address="123 Main St" data-hours="10:00, 10:30, 11:00, 11:30, 1:00">Gallery</a></li>
<li><a href="#" class="item" title="Radio" data-key="2" data-title="Radio" data-address="321 Center Dr" data-hours="11:00, 11:30, 12:00, 12:30, 1:00, 1:30, 2:00, 2:30">Radio</a></li>
</ul>
$(function()
{
$('#items').on('click', 'a.item', function ()
{
console.log($(this).data('key'));
return false;
});
});
答案 1 :(得分:1)
如果你可以修改HTML,我强烈建议你使用数据属性。
HTML:
<a href="#" class="item" title="Gallery" data-key="1" data-title="A+D Gallery" data-address="123 Main St" data-hours="10:00, 10:30, 11:00, 11:30, 1:00">Gallery</a>
JS:
console.log($("a").data("key"), $("a").data("title"), $("a").data("address"), $("a").data("hours"));
答案 2 :(得分:1)
从一个匹配多个元素的选择器请求属性时,您应该通过each
函数
$('.item').each(function () {
console.log($(this).attr('datakey'));
});
答案 3 :(得分:0)
您正在将点击监听器添加到document
而不是a
元素本身。
如果您为每个a
标记添加点击处理程序,您将获得所需的内容。
$(function() {
$('a.item').click(function() {
// this is the a tag you clicked.
console.log($(this).attr("datakey"));
});
});
答案 4 :(得分:0)
你会想要这样的东西
$('.item').click(function() {
var datahours = $(this).attr("datahours");
});
$(this)
指的是点击的元素
答案 5 :(得分:0)
目前,您正在获取课程.item
的所有项目的数据小时(等)。您可以在点击事件中获取这些项目。
$(".item").click(function(){
var datakey = $(this).attr("datakey");
var datatitle = $(this).attr("datatitle");
var dataaddress = $(this).attr("dataaddress");
var datahours = $(this).attr("datahours");
// CONSOLE
console.log(datakey);
});
正如Xeon所指出的,不是使用无效的属性名称,而是使用数据属性。
答案 6 :(得分:0)
一些事情。
您应该将点击事件直接附加到a
标记。您的行$(this).click()
可能附加到整个文档。 $('a.item').click()
这种方式this
将引用已点击的链接。
您应该列出您的数据属性,例如data-title
和data-key
。这样,您可以使用jQuery的$.data()
,这样就可以$(this).data().key
答案 7 :(得分:0)
试试这个
<script src="jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
var datakey = $(".item").attr("datakey");
var datatitle = $(".item").attr("datatitle");
var dataaddress = $(".item").attr("dataaddress");
var datahours = $(".item").attr("datahours");
$(".item").click(function(){
// CONSOLE
console.log(datakey);
});
})
</script>
<li><a href="#" class="item" title="Gallery" datakey="1" datatitle="A+D Gallery" dataaddress="123 Main St" datahours="10:00, 10:30, 11:00, 11:30, 1:00">Gallery</a></li>
<li><a href="#" class="item" title="Radio" datakey="2" datatitle="Radio" dataaddy="321 Center Dr" datahours="11:00, 11:30, 12:00, 12:30, 1:00, 1:30, 2:00, 2:30">Radio</a></li></ul>