当前位置:  开发笔记 > 编程语言 > 正文

如何让jQuery选择带有的元素.(期间)他们的身份证?

如何解决《如何让jQuery选择带有的元素.(期间)他们的身份证?》经验,为你挑选了4个好方法。

给定以下类和控制器操作方法:

public School
{
  public Int32 ID { get; set; }
  publig String Name { get; set; }
  public Address Address { get; set; }
}

public class Address
{
  public string Street1 { get; set; }
  public string City { get; set; }
  public String ZipCode { get; set; }
  public String State { get; set; }
  public String Country { get; set; }
}

[Authorize(Roles = "SchoolEditor")]
[AcceptVerbs(HttpVerbs.Post)]
public SchoolResponse Edit(Int32 id, FormCollection form)
{
  School school = GetSchoolFromRepository(id);

  UpdateModel(school, form);

  return new SchoolResponse() { School = school };
}

以下形式:

School: <%= Html.TextBox("Name") %>
Street: <%= Html.TextBox("Address.Street") %>
City: <%= Html.TextBox("Address.City") %>
Zip Code: <%= Html.TextBox("Address.ZipCode") %>
Sate:
Country:

我能够更新学校实例和学校的地址成员.这太好了!谢谢ASP.NET MVC团队!

但是,如何使用jQuery选择下拉列表以便我可以预先填充它?我意识到我可以做这个服务器端,但页面上会有其他影响列表的动态元素.

以下是我到目前为止,它不起作用,因为选择器似乎不匹配ID:

$(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);
    });
  });
});

bdukes.. 287

来自Google网上论坛:

在每个特殊字符前使用两个反斜杠.

jQuery选择器中的反斜杠会转义下一个字符.但是你需要其中两个,因为反斜杠也是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表示法中使用的字符的ID选择元素?在jQuery FAQ上.



1> bdukes..:

来自Google网上论坛:

在每个特殊字符前使用两个反斜杠.

jQuery选择器中的反斜杠会转义下一个字符.但是你需要其中两个,因为反斜杠也是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表示法中使用的字符的ID选择元素?在jQuery FAQ上.


因此,在CSS本身中,您也必须转义ID中的点.所有jQuery正在做的是要求你遵循CSS设定的规则.
您也可以按名称而不是ID进行选择.例如,$('[name ="Address.Country"]')
如果你不必逃避,你将如何查询具有ID地址和类状态的元素(如果你知道你没有通过指定类添加太多的ID,但它应该仍然有效,我会被授予,我会认为)?
我想知道要求开发人员执行此操作的合理化是什么,似乎jQuery中的一组简单的启发式方法可以解决这个问题,因为ID中的句点没有任何问题......

2> Elliot Nelso..:

如果id包含空格,则不能使用jQuery id选择器.使用属性选择器:

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

如果可能,请指定元素类型:

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


必须有quates才能工作:`$("div [id ='"+ variable +"']")`或`$("div [id ='foo bar']")`

3> 小智..:

逃离Jquery:

function escapeSelector(s){
    return s.replace( /(:|\.|\[|\])/g, "\\$1" );
}

用法示例:

e.find('option[value='+escapeSelector(val)+']')

更多信息在这里.



4> Dale Ragan..:

刚刚发布的ASP.NET MVC的Release Candidate解决了这个问题,它现在用ID属性的下划线替换了点.

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

渲染到


有关更多信息,请查看发行说明,从第14页开始.


dot在CSS中具有识别/组合类的特殊含义,这就是为什么在ID中使用它很麻烦."问题"与jquery无关.
推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有