如何使用变量构建有效的JQuery选择器

时间:2013-02-05 13:28:19

标签: javascript jquery html

我正在尝试构建一个jQuery选择器。这涉及连接字符串和变量。但是,由于某种原因,生成的选择器出现无效。我尝试了很多选项,例如:

$('[name="[name='$radioName + (row_id) + ']"][value="$result"]').attr('checked',true);

$radioName示例是:'Nigeria [Osun] [Okuku - ; //尖括号未关闭,因为如上所示,在附加右括号之前将附加row_id。

$result示例是:'67

row_id示例是:5

如何构建具有这些要求的有效描述符?

由于

2 个答案:

答案 0 :(得分:1)

尝试:

$('[name="' + $radioName + row_id + ']' + '"][value="' + $result + '"]').attr('checked',true);

当我将连接的表达式放在一起时,使用我首先使用适当的引号编写静态文本。类似的东西:

$('[name=""][value=""]').attr('checked',true);

然后我将'+ +'粘贴到我要添加变量的每个点中。像这样:

$('[name="'+ +'"][value="'+ +'"]').attr('checked',true);

最后,我添加变量:

$('[name="'+ $radioName + row_id + ']' + '"][value="'+ $result +'"]').attr('checked',true);

答案 1 :(得分:0)

我认为最好将选择和比较分开:

$('[name][value]') // select all elements that have both name and value attributes
    .each(function() {
        var $this = $(this);

        if ($this.attr('name') == 'whatever' && $this.attr('value') == 'result') {
            $this.prop('checked', true);
        }
    });

或过滤它们:

$('[name][value]') // select all elements that have both name and value attributes
    .filter(function() {
        var $this = $(this);

        return $this.attr('name') == 'whatever' && $this.attr('value') == 'result';
    })
    .prop('checked', true);