使用jQuery从动态创建的订单列表中获取所选列表值

时间:2016-11-07 18:21:08

标签: jquery

我有一个创建的动态订单列表,其类名如下

    $orderList = $('.questOl');

    for(var i=0; i<questList.length; i++){
        tr.push('<li class="questList">' + questList[i].questText + '</li>');
        tr.push('<p>&nbsp</p>')                     
    }
    $orderList.append($(tr.join('')));

然后我想在选择它时获取列表值。我在这个网站上尝试了几个代码片段。它给出了未定义的值。使用这行代码的最接近的尝试。

var x = $('.questOl').find('.questList').text();

但它从列表中获取所有价值。我想要的只是当前选定的值。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

你可以设置一个&#34; id&#34;基于迭代器的<li>标签:

for(var i=0; i<questList.length; i++){
    tr.push('<li class="questList" id="quest-' + i + '">' + questList[i].questText + '</li>');
    tr.push('<p>&nbsp</p>')                     
}

然后访问它:

var x = $('#quest-1').text();

希望它有所帮助。

编辑

如果您正在使用click事件来选择列表中的元素,则可以使用以下函数获取其值:

$('.questList').click(function(){
    var x = $(this).text();
});

在这种情况下,不需要&#34; id&#34;或&#34;数据&#34;属性。

PS:纠正我,如果我错了但有数据属性,我认为你有同样的问题要知道使用巫婆。

答案 1 :(得分:0)

以下是您可以做的事情:

  1. 使用动态元素创建而不是编写html来创建li。 (可选)
  2. for(var i=0; i < questList.length; i++)
    {
      tr.push('$('<li/>',
        { 
          class : "questList",
          text : questList[i].questText 
        }));
        tr.push('$('<p/>',  
        { 
          text : " " 
        }));
    }
    
    1. 在选择它时获取li值。

      由于您是动态创建元素,因此可以在您创建的li上委派click事件并在文档级别注册它,以便文档可以监听标记。

    2. $(document).on('click','.questOl .questList', function()
      {
          var selectedLiText = $(this).text();
      });