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

Javascript 如何使用变量构建有效的JQuery选择器,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试构建一个jQuery选择器。这涉及到串接字符串和变量。但是,由于某些原因,结果选择器无效。我尝试过以下几种选择: $('[name="[name='$radioName + (row_id) + ']"][value="$result"]').attr('checked',true); $radioName示例为:'Nigeria[Osun][Okuku-;//角括号未闭合,因为在附加闭合括号之前,将先附加行id,如上所示 $result示例为:'67 行id示例为:5 如何根据这些

我正在尝试构建一个jQuery选择器。这涉及到串接字符串和变量。但是,由于某些原因,结果选择器无效。我尝试过以下几种选择:

$('[name="[name='$radioName + (row_id) + ']"][value="$result"]').attr('checked',true);
$radioName
示例为:'Nigeria[Osun][Okuku-;//角括号未闭合,因为在附加闭合括号之前,将先附加行id,如上所示

$result
示例为:'67

行id
示例为:5

如何根据这些需求构建有效的描述符

谢谢

试试:

$('[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);

我认为最好将选择和比较分开,如下所示:

$('[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);

选择器只不过是字符串。堆栈溢出的语法高亮显示器已经显示了一些语法错误。
[name=“[name=…]”
无效。无法在属性选择器中放置属性选择器(除非
[name=…]
是属性的值。)@阿尔瓦罗格·维卡里奥:谢谢,你知道上面的例子可能有什么问题吗?我想我没有看到你提到的语法。Thanks@BradChristie:谢谢。名字的结构令人不快,但我的方法是这样的。$radioName是名字(部分)元素的。在本例中,它可能是Nigeria[Kwara][Ilorin-同样,连字符是名称的一部分,但最后一个括号故意丢失。这将在添加行id后添加,行id可能是整数。结果名称为:Nigeria[Kwara][Ilorin-3]或Nigeria[Kwara][Ilorin-9]谢谢,但我尝试了这个,并得到了错误:索引表达式中的SyntaxError:missing]…Nigeria[Kwara][Ilorin-+row_id+'“]][value=“+7+'””)。attr('checked',true)@pi:我编辑了我的答案,以包含$radioName中包含的答案的右括号。顺便说一下,最好避免存储单个支架。最好将它们排除在变量之外,并将它们对作为文本显式地放在表达式中。更不用说迷惑了。再次感谢你,但还是没用。但愿如此。根据我的观察,js似乎在抱怨:$radioName='Nigeria[Kwara][Ilorin-';然后执行console.log($radioName);失败了。这可能是问题吗?谢谢。@pi:我下一步要做的是用实际文本而不是变量进行选择。这样你就知道问题是变量还是替换。所以:
$('[name=“Nigeria[Osun][Okuku5]”][value=“67”]”)。attr('checked',true)
谢谢。实际上我已经做了很长时间了,正在调试代码。不过谢谢