Получить текст внутри тега span динамически сгенерированной таблицы?

У меня есть динамически сгенерированная страница корпоративного приложения. Данные находятся внутри структуры таблицы. Мне нужно получить доступ к значению тега span внутри этой таблицы.

 <table class="table table-bordered table-hover table-striped">
        <thead>
            ...
        </thead>
        <tbody>
            @foreach (var item in Model.Select((x, i) => new { Data = x, Index = i }))
            {
                <tr>
                    <td>@(item.Index + ((Model.PageNumber - 1) * Model.PageSize) + 1)</td>
                    <td>
                        **<span class="site-name">
                            @Html.DisplayFor(modelItem => item.Data.SITENAME)
                        </span>**  //Want to access item inside span
                    </td>

                    <td>@Html.DisplayFor(modelItem => item.Data.REMARKS)</td>
                    <td>

                        <a  href="@Url.Action("Delete", new { id = item.Data.ID })"
                            class="btn btn-sm btn-danger delete-site">
                            <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
                        </a>
                    </td>

                </tr>
            }
        </tbody>

Jquery выглядит так

 $(document).on("click", ".delete-site", function (e) {
            var item = $(this);
            var name = $(item.closest("span[class='site-name']"));
            alert(name.text());                
            return false;
        });

Здесь я получаю пустое окно оповещения.

Как я могу получить значение, которое находится внутри тега span, с помощью jquery?


person ksg    schedule 16.01.2015    source источник


Ответы (4)


Замените это:

var name = $(item.closest("span[class='site-name']"));

С этим:

var name = $(item.closest("tr").find("span[class='site-name']"));

Поскольку .site-name span не находится внутри вашего родительского td, поэтому используйте ближайший к ближайшему родительскому tr, имеющему .site-name, а затем используйте find чтобы получить элемент

person Bhojendra Rauniyar    schedule 16.01.2015

Попробуй это

 $(document).on("click", ".delete-site", function (e) {
            var item = $(this);
            var name = $(item).find("span[class='site-name']");
            alert(name.text());                
            return false;
        });
person Manoj    schedule 16.01.2015

Попробуй это

$(document).on("click", ".delete-site", function (e) {
            var item = $(this);
            var name = item.closest("span").find("site-name");
            alert(name.text());                
            return false;
        });
person SimarjeetSingh Panghlia    schedule 16.01.2015

Вам нужно найти ближайший <tr>, а затем найти диапазон

$(document).on("click", ".delete-site", function(e) {
    var item = $(this);
    var name = item.closest("tr").find("td span[class='site-name']");
    alert(name.text());
    return false; 
});
person Amit Joki    schedule 16.01.2015