Как получить определенный текст div с фильтром jQuery () - PullRequest
2 голосов
/ 26 января 2010

У меня есть следующий HTML, который отображается в ретрансляторе ASP.NET:

<div class="divDE-item" onclick="addFilter(this);">
  <span class="spnKey">Some key</span>
  <div>1234</div>
</div>

Я понимаю, что щелчок по внешнему элементу div может быть не самым изящным jQuery-ориентированным подходом. Однако, учитывая мою ситуацию, все работает хорошо.

Вот моя функция addFilter ():

function addFilter(oDiv) {
  $(document).ready(function() {
    // Get and set the prefix text for the label. i.e. "Key = "
    sDEName = $(oDiv).find("span").text();
    $('#<%= lblDEName.ClientID %>').text(sDEName + " = ");

    // Get the actual filter text value. i.e. "1234"
    // sFilter = $(oDiv).text();
    var sFilter = $(oDiv).filter(function() {
        var filtered = $(this).not(".spnKey");
        return filtered
    });

    $('#<%= txtValue.ClientID %>').val(sFilter);
  });
}

Цель состоит в том, чтобы вывод выглядел следующим образом (1234 является значением текстового поля):

Некоторые ключи = 1234

Однако вывод, который я получаю: Некоторая клавиша = Некоторая клавиша 1234

Ответы [ 2 ]

4 голосов
/ 26 января 2010

Вам не нужно звонить filter.

Вы можете просто написать $('div:not(.spnKey)', oDiv).text().

Чтобы ответить на ваш вопрос, вы используете filter и not неправильно. Метод filter возвращает объект jQuery, содержащий некоторые элементы в том, к которому вы его вызываете. (Не их дети). Чтобы использовать его таким образом, вы должны позвонить $(oDiv).children().filter(...).

Метод not противоположен filter и возвращает элементы в объекте jQuery, которые не соответствуют селектору функции. Поэтому вы также можете написать $(oDiv).children().not('.spnKey').

2 голосов
/ 26 января 2010

Похоже, вы идете по этому пути совершенно неправильно. Попробуйте это - пусть ваш репитер выдает код как обычно:

<div class="divDE-item">
  <span class="spnKey">Some key</span>
  <div>1234</div>
</div>

И используйте следующий javascript, чтобы получить значение:

$(document).ready(function() {
  $("div.divDE-item").click(function() { 
     $thisElement = $(this);
     var thisValue = $($thisElement).children("div").text();
     $('#<%= txtValue.ClientID %>').val(thisValue);
  });
});

Таким образом, он будет применять событие click к каждому экземпляру этого (я полагаю, повторяющегося) div, который появляется в предварительном рендере DOM. Должно быть немного более легким.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...