JQuery найти только работу в IE - PullRequest
0 голосов
/ 22 февраля 2011

Итак, мы используем сетку MVC3 с двумя тегами привязки в одном столбце таблицы.Мы хотим, чтобы, щелкнув строку, получить значение тега привязки из первой ячейки таблицы.Мы преуспели в IE *, но в Firefox и Chrome это не работает.Вот код:

$("#interestTypesGrid tbody tr").live("click", function (e) {
    $("#SelectedInterestTypeID").val($(this).find('td:first a').val());
    $.post(URLGetInterestRates, $("#FormMasterData").serialize(), function (data) { $("#pagedInterestRates").html(data); });
});

Итак, проблема в:

$(this).find('td:first a').val();

Это работает только в IE !!!

Ответы [ 2 ]

3 голосов
/ 22 февраля 2011

функция val предназначена главным образом для получения и установки значения элементов формы.Чтобы получить / установить содержимое тега без формы, попробуйте использовать функции text или html

$("#interestTypesGrid tbody tr").live("click", function (e) {
    $("#SelectedInterestTypeID").val($(this).find('td:first a').text());
    $.post(URLGetInterestRates, $("#FormMasterData").serialize(), function (data) { $("#pagedInterestRates").html(data); });
});

В этом коде я предполагаю, что #SelectedInterestTypeID - это элемент формы, если нет, то вы также должны изменить его на text.

Я тестировал этот рабочий образец в IE и Chrome.

Обновление

Пример предоставленного вами образца HTML:

<tr>
    <td>
        <a href="/MasterData/ShowInterestTypeDetails?id=11" value="11">
            <img src = "../../Content/img/icon_detail_16px.gif" alt="" />
        </a>
    </td>
    <td>q</td>
    <td>34</td>
    <td>q12</td>
    <td>
        <a href="/MasterData/DeleteInterestType?id=11" value="11">
            <img src = "../../Content/img/icon_delete_16px.gif" alt="" />
        </a>
    </td>
</tr>

value не является допустимым атрибутом в HTML.Если вы ориентируетесь на HTML5, вы можете использовать атрибут данных и функцию data из jQuery, фактически, вероятно, будет проще всего поместить атрибут в tr:

<tr data-interestType='{"id":11}'>

Затем ваш javascript с использованием функции данных:

$("#interestTypesGrid tbody tr").live("click", function (e) {
    $("#SelectedInterestTypeID").val($(this).data("interestType").id);
    $.post(URLGetInterestRates, $("#FormMasterData").serialize(), function (data) { $("#pagedInterestRates").html(data); });
});

Другой рабочий образец с использованием этого метода.

Будь прокляты все стандарты, вы можете просто использовать attr jquery функция для получения значения любого произвольного атрибута элемента.

3 голосов
/ 22 февраля 2011

<a> теги не имеют атрибутов значения, поэтому .val() не должен работать.

Попробуйте вместо этого использовать .text() (может потребоваться $.trim()).

$(this).find('td:first a').text()
...