我有一个项目符号列表,每个列表项都有一个国家/地区的数据属性。我想获取活动列表项的数据属性并使用它做一些事情。现在,我只是想在一条消息中提醒它。但是,我收到的警告消息显示[object Object]。
这是HTML列表:
<ul class="country_list">
<li class="country_name france" data-country="fr"> </li>
<li class="country_name united-states active" data-country="us"> </li>
<li class="country_name china" data-country="cn"> </li>
<li class="country_name spain" data-country="es"> </li>
<li class="country_name italy" data-country="it"> </li>
</ul>
这是我到目前为止的javascript:
$(document).ready(function($) {
$("li.country_name").click(function(){
$(".active").removeClass("active");
$(this).addClass("active");
var cc = $(".active").data("country");
var countryMessage = $("your country is " + cc + "!");
alert(countryMessage);
});
});
我是Javascript和jQuery的新手,并且一直在尝试对此进行排序,但没有任何效果。有人可以帮助我指出正确的方向吗?
答案 0 :(得分:0)
尝试使用
var cc = $(".active").attr("date-country");
你甚至可以
var cc = $(this).attr("date-country");
答案 1 :(得分:0)
我刚刚修改了codepen中的代码。另请查看评论:D
$(function(){
// this function will execute when document.ready
var $li = $("li.country_name").click(function(){
$li.removeClass("active") // you can cache all li items, it's not necessarily query all the time
var cc = $(this).addClass("active").data("country");
alert("your country is " + cc + "!");
});
});
答案 2 :(得分:0)
请尝试:在此演示JSFiddle
var $ul=$('.country_list'),
cssClassActive='active',
// show message
showMsg=function(country){
var countryMessage='your country is'+country;
alert(countryMessage);
},
// handler
handler=function(){
var $this=$(this);
if($this.hasClass(cssClassActive)){
$this.removeClass(cssClassActive);
}
$this.addClass(cssClassActive);
showMsg($this.data('country'));
};
// delegate event
$ul.delegate('li','click',handler);
答案 3 :(得分:0)
使用此:
use .attr('data-country') instead of data('country')