如何在li ul中获得跨度动态值

时间:2016-02-29 11:24:15

标签: javascript jquery asp.net

我的ASPX代码如下所示:

<ul id="userlist">
    <a class="s-test">
        <li>
            <span id="userlistspan" class="tt-User" value="1">Cardiologist</span>
            <span id="userlistspan1" class="tt-Userss">SPECIALITY</span>
        </li>
    </a>
    <a class="s-test">
        <li>
            <span id="userlistspan" class="tt-User" value="2">Cardio</span>
            <span id="userlistspan1" class="tt-Userss">SPECIALITY</span>
        </li> 
    </a>
</ul> 

我尝试过的jQuery是这样的:

$('#userlist li #userlistspan').click(function () {
    $('#txtSearch').val($(this).text());
})
//here am getting text like Cardio

如何从value=2获得span的价值?

1 个答案:

答案 0 :(得分:2)

由于以下几个原因,您的HTML完全无效:

  • 您不能将a元素作为ul的直接子元素。 li必须是子元素。
  • 如果id在同一文档中应该是唯一的,则您有id个重复属性,而是使用类来对元素进行分组。
  • span元素没有value属性,如果要使用元素存储自定义数据,请使用data-*属性。
  • a元素必须具有hrefname属性,但在这种情况下它们的使用似乎是多余的,因此您可以删除它们。

您需要先解决所有问题:

<ul id="userlist">
    <li>
        <span class="userlistspan tt-User" data-value="1">Cardiologist</span>
        <span class="userlistspan1 tt-Userss">SPECIALITY</span>
    </li>
    <li>
        <span class="userlistspan tt-User" data-value="2">Cardio</span>
        <span class="userlistspan1 tt-Userss">SPECIALITY</span>
    </li> 
</ul> 

从那里你可以将点击处理程序附加到.userlistspan类,并使用this关键字来引用引发事件的元素。然后,您可以使用data()方法获取data-value,如下所示:

$('#userlist li .userlistspan').click(function() { 
    var $span = $(this);
    $('#txtSearch').val($span.text());
    var value = $span.data('value'); // = 1 or 2, depending on which element you clicked.
})