如何在jQuery选择器中包含变量?

时间:2013-05-25 21:16:13

标签: javascript jquery variables

在以下示例中,以下内容不起作用:

var contracts1 = $(":input[id=" + contractPicker + "]").val();  
console.log(contracts1);
var contracts2 = $(":input[id='" + contractPicker + "']").val();
console.log(contracts2);
var contracts3 = $(":input#contractPicker").val();  
console.log(contracts3);    
var contracts4 = $("#" + contractPicker).val();
console.log(contracts4);    
// EVERYTHING above gives me "undefined"
var contracts5 = $(":input[id='ctl00_m_g_fabbe6d4_0201_49c8_ace5_ac53fc7a9276_ctl00_ctl05_ctl00_ctl00_ctl00_ctl04_ctl00_ctl00_MultiLookupPicker']").val();                                  
console.log(contracts5);

为什么会这样?/我如何让它发挥作用?

更新: 问题出在变量定义的其他地方

3 个答案:

答案 0 :(得分:3)

你错过了报价。

var c = $(":input[id=" + cp + "]").val();

应该是

var c = $(":input[id='" + cp + "']").val();

虽然这样做可能更简单:

var c = $("#" + cp).val();

由于ID属性必须是唯一的,因此不需要使用其他说明符。

答案 1 :(得分:1)

试试var c = $(":input#cp").val();。我认为它会解决你的问题。

也可以用单引号尝试。我昨天在我的一个项目中使用了完全相同的格式。

答案 2 :(得分:-1)

试试这个

var contracts4 = $("#" + contractPicker + "").val();

UPD:还有一个,“input”是一个标签选择器,所以你不需要在输入前加上“:”。 “:”符号表示您要选择伪类,但不是元素。