我正在为地图构建主题选择器,并希望反映当前选定的主题。
代码似乎有效,但永远不会返回“li”项的值,它总是返回“s-thumbs”,无论我点击什么“li”项目。我尝试使用.closest()方法但无济于事。
我正在关注this article.
<script language="javascript">
$("ul.s-thumbs").live("click", function(event) {
$("#theme_title").text(
$(this).closest("ul.s-thumbs li").attr("class")
);
});
</script>
<div id="theme">You have selected the <div id="theme_title"></div> Theme</div>
<div class="container_16" id="themebg">
<!--<div class="grid_1"> <a href="" "img" src="/styles/image/leftarrow.png" id="leftarrow" alt=""/></div>-->
<div class="grid_16 slider-wrapper">
<ul class="s-thumbs">
<li class="Default"> <a href="javascript:setRoadmap()"><img src="/styles/image/thumbs/default.png" alt="" /></a>Default</li>
<li class="Hatchery"> <a href="javascript:setGreen()"><img src="/styles/image/thumbs/hatchery.png" alt="" /></a>Hatchery</li>
</ul>
</div>
答案 0 :(得分:3)
$("ul.s-thumbs").on("click", "li", function() {
var myText = $(this).attr("class");
alert( myText );
$("#theme_title").text( myText );
});
<强> Demo jsFiddle 强>
使用 .on()元词:http://api.jquery.com/on/在事件后添加特定元素(点击)
这是(今天)已弃用的.live()
方法的新替代品。
答案 1 :(得分:2)
$('ul.s-thumbs li').on('click', function(){
var getClass = $(this).attr('class');
$("#theme_title").text(getClass);
});
答案 2 :(得分:1)
$("ul.s-thumbs").on("click", "a", function(event) {
var txt = $(this).closest("ul.s-thumbs li").attr("class");
$("#theme_title").text(txt);
});
注意 live()
已被弃用。
答案 3 :(得分:1)
将事件处理程序添加到li而不是ul。我也使用了Jquery 1.7 +
中的首选方法$("ul.s-thumbs li").on("click", function(event) {
$("#theme-title").html(
$(this).attr("class")
);
});
答案 4 :(得分:1)
<script language="javascript">
$(document).ready(function() {
$(".s-thumbs").on("click", "a", function(e) {
$("#theme_title").text( $(e.target).parent("li").attr("class") );
});
});
</script>