Как я заставляю jQuery выбирать элементы с a. (период) в их идентификаторе?

171
задан Keavon 27 August 2014 в 23:13
поделиться

4 ответа

От Google Groups :

Использование две обратных косых черты перед каждым специальным символом.

обратная косая черта А в селекторе jQuery выходит из следующего символа. Но Вам нужны два из них, потому что обратная косая черта является также символом ESC для строк JavaScript. Первая обратная косая черта выходит из второго, давая Вам одну фактическую обратную косую черту в Вашей строке - который тогда выходит из следующего символа для jQuery.

Так, я предполагаю, что Вы смотрите

$(function() {
  $.getJSON("/Location/GetCountryList", null, function(data) {
    $("#Address\\.Country").fillSelect(data);
  });
  $("#Address\\.Country").change(function() {
    $.getJSON("/Location/GetRegionsForCountry", { country: $(this).val() }, function(data) {
      $("#Address\\.State").fillSelect(data);
    });
  });
});

Также выезд , Как я выбираю элемент идентификатором, который символы использовал в нотации CSS? на FAQ jQuery.

286
ответ дан Felix Kling 23 November 2019 в 20:43
поделиться

Вы не можете использовать идентификационный селектор jQuery, если идентификатор содержит пробелы. Используйте селектор атрибута:

$('[id=foo bar]').show();

, Если возможно, определите тип элемента также:

$('div[id=foo bar]').show();
25
ответ дан Elliot Nelson 23 November 2019 в 20:43
поделиться

Предвыпускная версия ASP.NET, MVC, который был просто выпущен, устранил эту проблему, она теперь, заменяет точки символами нижнего подчеркивания для идентификационного атрибута.

<%= Html.TextBox("Person.FirstName") %>

Рендеринг к

<input type="text" name="Person.FirstName" id="Person_FirstName" />

Для получения дополнительной информации просматривает информацию о версии, запускающуюся на странице 14.

9
ответ дан Dale Ragan 23 November 2019 в 20:43
поделиться

Просто дополнительная информация: Проверьте этот ASP.NET выпуск № 2403 .

MVC, Пока проблема не устраняется, я использую свои собственные дополнительные методы как HTML. TextBoxFixed, и т.д. который просто заменяет точки подчеркиваниями в идентификационном атрибуте (не в атрибуте имени), так, чтобы Вы использовали jQuery как $ (" #Address_Street"), но на сервере, это похоже на Адрес. Улица.

Пример кода следует:

public static string TextBoxFixed(this HtmlHelper html, string name, string value)
{
    return html.TextBox(name, value, GetIdAttributeObject(name));
}

public static string TextBoxFixed(this HtmlHelper html, string name, string value, object htmlAttributes)
{
    return html.TextBox(name, value, GetIdAttributeObject(name, htmlAttributes));
}

private static IDictionary<string, object> GetIdAttributeObject(string name)
{
    Dictionary<string, object> list = new Dictionary<string, object>(1);
    list["id"] = name.Replace('.', '_');
    return list;
}

private static IDictionary<string, object> GetIdAttributeObject(string name, object baseObject)
{
    Dictionary<string, object> list = new Dictionary<string, object>();
    list.LoadFrom(baseObject);
    list["id"] = name.Replace('.', '_');
    return list;
}
0
ответ дан gius 23 November 2019 в 20:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: