jQuery.load无法使用组合字符串

时间:2014-06-27 16:42:57

标签: jquery html asp.net-mvc

我试图使用jQuery.load函数从我的控制器使用以下代码获取部分视图:

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

$("#containerCity").load(url);

如果代码按上面所述运行,则不起作用。什么都没有加载,我没有错误。如果我明确定义“状态”,它将起作用:

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

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

为什么我在字符串中定义状态时会起作用,但是当我尝试将字符串与元素中的文本组合时,即使两者似乎都输出相同的字符串,它也不会起作用?我如何让它以我想要的方式工作?

1 个答案:

答案 0 :(得分:1)

请注意: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, '+');