我试图使用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
为什么我在字符串中定义状态时会起作用,但是当我尝试将字符串与元素中的文本组合时,即使两者似乎都输出相同的字符串,它也不会起作用?我如何让它以我想要的方式工作?
答案 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, '+');