jQuery选择带有类a的元素,但它也可以有类b

时间:2012-10-10 18:51:21

标签: jquery jquery-selectors

我的第一个问题。我的英语也很好,我可以形容为好,所以请原谅(不知道更好的词:))。

我正在使用php生成具有不同风格的表行。

if ($n % 2 == 0)
    $tr_class = ' class="package_' . $p->package_id . ' alt"';
else {
    $tr_class = ' class="package_' . $p->package_id . '"';
}

<tr<?php echo $tr_class ?>

我想在具有类package_{number here}的每一行的第五个单元格中选择输入字段,并为其添加一些样式。 为此,我使用了这个陈述:

$('tr.package_' + package_errors_ids[i] + ' td:nth-child(5) input[type=text]').css('border', '1px solid red');

但是第二课(.alt)不允许我这样做。 我不知道如何修改那个语句来实现这一点。 你会帮忙吗? :)

我忘记写了。它有效但不是每次都有效。 Package_errors_ids是包含数字的数组,我用它来创建唯一ID以区分用户无效的包。当2行无效时(其中一行具有.alt类),两者都受此代码css('border', '1px solid red');的影响。但是当一个有效时,这些行中没有一个会受到影响。

编辑: 我已经简化了我的混合js和php代码,以便在不使用JavaScript数组的情况下生成代码 http://jsfiddle.net/TAdsT/7/

在此简化和清除我的webbrowser缓存后,它正常工作!谢谢大家的意见。这是代码(如果jsfindle.net擦除它):

<script type="text/javascript">
$(document).ready(function() {
<?php
$count = count($this->package_errors_ids);
if ($count > 0)
{
    for ($i = 0; $i < $count; $i++)
    {
        echo "$('tr.package_" .
            (int) $this->package_errors_ids[$i] .
            " td:nth-child(5) input[type=\"text\"]').css('border', '1px solid red');\n";
    }
}
?>
});
</script>

2 个答案:

答案 0 :(得分:1)

我在看这个:

// in PHP
$('tr.package_' + package_errors_ids[i] + ' td:nth-child(5) input[type=text]')

这将生成这样的东西,我假设:

// after PHP
$('tr.package_1 td:nth-child(5) input[type=text]')

在选择<tr class="package_1 alt">时完全不会有任何问题。没问题。假设您的HTML正确生成,这意味着您正在做其他错误的事情。我将假设这是这一部分:

input[type=text]

尝试将其更改为

input[type="text"]

答案 1 :(得分:0)

如果要同时使用这两个类来访问元素

,请尝试此操作
$('tr.package_' + package_errors_ids[i] + '.alt td:nth-child(5) input[type=text]')                   
   .css('border', '1px solid red');