jQuery.加载不能处理组合字符串



我正在尝试使用jQuery。使用以下代码加载函数以从控制器获取部分视图:

var url = '/Home/DropDownCity?state=' + $('#dropDownState:first-child').text();
console.log(url);
$("#containerCity").load(url);

如果代码像上面写的那样运行,它不起作用。什么都没有加载,我没有得到错误。如果我显式地定义"state",它将工作:

var url = '/Home/DropDownCity?state=Ohio';

在这两种情况下,console.log(url)记录的内容完全相同:/Home/DropDOwnCity?state=Ohio

为什么它的工作,当我在字符串中定义状态,但不是当我试图结合字符串与元素的文本,即使两者似乎输出相同的字符串?我怎样才能让它按我想要的方式工作?

请注意,:first-child应该进一步过滤一个可能不止一个的集合。当您总是有1个元素时,就像ID选择器的情况一样,您不需要它,并且当您应用:first-child的元素碰巧不是它的父元素的第一个子元素时,您将始终获得一个空集合:

所以我会说使用:

$('#dropDownState').text().trim();

除非你对这个元素的子元素感兴趣并且你想要第一个子元素:

$('#dropDownState').children().filter(':first-child').text().trim();

和你想要确保没有空格围绕text()使用.trim()。您可以更进一步,通过使用正则表达式来确保只允许使用字符。

$('#dropDownState').text().replace(/([a-z ]*)/,'$1').replace(/ /g, '+');

最新更新