Jquery在单击li项目时更改div文本值

时间:2012-05-08 16:13:24

标签: javascript jquery html

我正在为地图构建主题选择器,并希望反映当前选定的主题。

代码似乎有效,但永远不会返回“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>

5 个答案:

答案 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);
});

演示链接:http://jsfiddle.net/ChaseWest/w2tCE/4/

答案 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")
    );
 });

演示:http://jsfiddle.net/euSye/1/

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