我想在id="nm"内单击<ul>时使用div
这是HTML。

<div id="suggestionTags">
   <ul>
      <li class="nm">Commonwealth</li>
      <span class="cty"> x GB</span>
      <li class="hse">Commonwealth</li>
      <li class="yrs">1649-1653</li>
   </ul>
   <ul>
      <li class="nm">Oliver Cromwell</li>
      <span class="cty"> x GB</span>
      <li class="hse">Commonwealth</li>
      <li class="yrs">1653-1658</li>
   </ul>
   <ul>
      <li class="nm">Richard Cromwell</li>
      <span class="cty"> x GB</span>
      <li class="hse">Commonwealth</li>
      <li class="yrs">1658-1659</li>
   </ul>
   <ul>
      <li class="nm">Elizabeth II ((Head of the Commonwealth of Nations))</li>
      <span class="cty"> x GB</span>
      <li class="hse">House of Windsor</li>
      <li class="yrs">1952-</li>
   </ul>
</div>


这是javascript的一部分:

$("#suggestionTags").on('click',function(){
    alert( $(this).find("li.nm").text() );
});


此代码使我无所不能,而不仅仅是点击的id =“ nm”
有人可以帮我吗?

编辑:

提议的解决方案进入http://jsfiddle.net/工作阶段。但是我仍然遇到问题。
我将发布我的代码,可能是问题所在。

    <script language="JavaScript">

     $(document).ready(function()

            {
//this is the code that does'nt work
            $('#suggestionTags ul').on('click', function() {
                alert($(this).find("li.nm").text());
            });
//end of part
                var o = [];
                $('#scrivo').keyup(function()
                {
                    if ($('#scrivo').val() <= 0) {
                        $('#suggestionTags').empty();
                        return;
                    }
                    var json = (function() {
                        var json = null;
                        $.ajax({
                            'async': false,
                            'global': false,
                            'url': "re.json",
                            'dataType': "json",
                            'success': function(data) {
                                json = data;
                            }
                        });
                        return json.Re;
                    })();
                    o = $.grep(json, function(n) {
                        return n.nm.indexOf($('#scrivo').val()) !== -1;
                    }, false);
                    $('#suggestionTags').empty();
                    var html = "";
                    $.each(o, function(index, value) {
                        html += '<ul>';
                        $.each(value, function(i, v) {
                            switch (i) {
                                case "nm":
                                    html += "<li class='nm'>" + v + "</li>";
                                    break;
                                case "cty":
                                    html += "<span class='cty'> x " + v + "</span>";
                                    break;
                                case "hse":
                                    html += "<li class='hse'>" + v + "</li>";
                                    break;
                                case "yrs":
                                    html += "<li class='yrs'>" + v + "</li>";
                                    break;
                            }
                            ;
                        });
                        html += "</ul>";


                    });
                    $('#suggestionTags').append(html);
                });

            });

        </script>


我解释一下我的代码:该代码检索一个json文件,然后<input>使用keyup功能过滤var o。过滤的对象数组显示在#suggestionTags <div>中。
json是这样的:

{
  "Re":
[
  {
    "nm": "Edward the Elder",
    "cty": "GB",
    "hse": "House of Wessex",
    "yrs": "899-925"
  },
  {
    "nm": "Edgar",
    "cty": "GB",
    "hse": "House of Wessex",
    "yrs": "959-975"
  },
  {
    "nm": "Edward the Martyr",
    "cty": "GB",
    "hse": "House of Wessex",
    "yrs": "975-978"
  }
 ]
}


我不明白为什么这段代码无法按预期工作。但是如果我更改这行代码

$('#suggestionTags ul').on('click', function() {
                alert($(this).find("li.nm").text());
            });



这个

$('#suggestionTags').on('click', function() {
                alert($(this).text());
            });


在警报弹出窗口中,我可以看到所有过滤的对象。但是我无法检索单击的html部分。

最佳答案

我会这样:

$("#suggestionTags li").on('click', function () {
    alert($(this).closest('ul').find("li.nm").text());
});


jsFiddle example

关于jquery - 如何返回点击的元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25004231/

10-11 11:08