从 ul li jquery 获取所选项目

Getting selected item from ul li jquery

本文关键字:选项 项目 获取 jquery ul li      更新时间:2023-09-26

嗨,我正在动态地在 ul - li HTML 标签中填充一个列表。我所需要的只是获取相应ul的选定li的值。我尝试了所有可能的jquery方法,但仍然没有定义。我正在填充 ul - li 作为:

jQuery.get(url, function(data) {        
        for(i=0;i<data.length;i++){
            //console.log(data[i])  //"+data[i]+"
            msg = "<li> <a href=#>"+data[i]+"</a></li>";
            document.querySelector('#option1').innerHTML +=  msg;
        }           
    });

HTML 部分为:

<body>  
 <div class="wrap">    
 <div class="content">
 <div class="cate-map">
    <ul id="option1" onclick="doSelection()">       
    </ul>       
  </div>
  </div>    
  <div class="content2">
  <div class="cate-map">
    <ul id="option2">       
    </ul>       
  </div>
 </div>
<div class="clear"></div>    
<div class="content3">  <textarea id="content4"></textarea>    
</div>    
</div>
</body>

点击方法如下:

function doSelection(){
    var id = $('#option1 li.selected').attr('value');
    alert(id);      
}

问题是我得到的id值"未定义"。

更新

正如你们所建议的,我将代码更改为:

将 ul 填充为:

jQuery.get(url, function(data) {
        for(i=0;i<data.length;i++){
            msg = "<li data-input="+data[i]+" class='selected'> <a href=#>"+data[i]+"</a></li>";
            document.querySelector('#option1').innerHTML +=  msg;
        }
    });

HTML ul 作为:

<div class="cate-map">
    <ul id="option1"  onclick="doSelection()">
    </ul>
    </div>

点击功能为:

function doSelection(){
    alert($('#option1 li.selected').attr('data-input'));
}

现在我得到一个值作为警报,但我总是得到第一个元素作为警报。无论我单击哪个元素,仍然总是获得列表的第一个元素。请帮忙。

您需要

将类添加到任何li元素selected。看看吧:

msg = "<li class="selected"> <a href=#>"+data[i]+"</a></li>";

并获取锚标签的内容:

function doSelection(){
    var id = $('ul#option1 > li.selected a').text();
    alert(id);
}
正如

您在 Hamidi 的评论中看到@Frédéric value属性在与ul一起使用时li不存在,因此最好将您自己的属性添加到其中,然后像这样访问它:

	for(i=0;i<4;i++){// use actual data it is just a demo
        msg = "<li data-input="+i+" class='selected'> <a href=#>"+i+"</a></li>";
        document.querySelector('#option1').innerHTML +=  msg;
    }	
    $('#option1 li').click(function(){
    	//console.log($(this).attr('data-input'));
        alert($(this).attr('data-input'));	// this will alert data-input value.
         
     });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrap">
<div class="content">
 <div class="cate-map">
    <ul id="option1">
    </ul>
    </div>
</div>
<div class="content2">
 <div class="cate-map">
    <ul id="option2">
    </ul>
    </div>
</div>
<div class="clear"></div>
<div class="content3">  <textarea id="content4"></textarea>

这将对您有所帮助。您可以使用 jquery 方法来处理选择事件。

 $("#option1 li").click(function() {
     alert($(this).html());
 });