在jquery类选择器中使用变量

时间:2011-05-26 17:15:09

标签: jquery jquery-selectors

我在jQuery类选择器中使用变量时遇到问题。 以下作品:

$('.contactcapturepage > .question-container > .select-container > select').each(function () {...

但以下不起作用

var pageType='.contactcapturepage';
$(pageType+' > .question-container > .select-container > select').each(function () {...

如何在类选择器层次结构中使用变量?

感谢。

编辑:响应更多代码的请求: 我正在调用辅助函数如下:

helper_FormMapper(existing.contact, 'objectToForm','.contactcapturepage');

帮助者签名:

function helper_FormMapper(object,direction,pageType) {

然后在同一个函数中:

//$('.contactcapturepage > .question-container > .select-container > select').each(function () {
        $(pageType+' > .question-container > .select-container > select').each(function () {
            var propertyname = $(this).attr('name');
            $.log('processing select:'+propertyname);
            if (propertyname != 'country'
                && propertyname != 'state') {

                if (direction == 'objectToForm') {
                    $("select#" + propertyname + " option").each(function () { this.selected = (this.text == object[propertyname]); });
                }
                else {
                    object[propertyname] = $('#' + propertyname + ' :selected').text();
                }
            }
        });

请注意,注释掉的行有效,而未注释的版本无效。

编辑 - 进一步测试后,以下内容也不起作用:

var path = pageType + ' > .question-container > .text-container > input';
        $(path).each(function () {...

编辑 - 但以下内容有效:

var path = '.contactcapturepage > .question-container > .text-container > input';
        $(path).each(function () {...

这里发生了什么!

编辑: 以下也适用

pageType = '.contactcapturepage';
    $(pageType + ' > .question-container > .text-container > input').each(function () {

,所以看起来它与jQuery无关,而是与函数参数在某处被破坏有关。将pageType输出到控制台会将其显示为未定义。

编辑 - 好的 - 脸上有很多鸡蛋 - 我的代码中的错误...非常抱歉浪费了你的时间

1 个答案:

答案 0 :(得分:0)

我无法评论,所以我必须把它作为答案。 你确定没有调用each()中的函数,也许它是在你的内部得到一些例外。

如果您使用的是chrome,那么我会在此行中设置一个断点

$(pageType+' > .question-container > .select-container > select')

然后我会在控制台中运行它

$(pageType+' > .question-container > .select-container > select').length