jQuery选择器“具有”功能和条件

时间:2018-11-29 13:30:05

标签: jquery

尽管我不确定自己是否正确使用了JQuery和“:has()”选择器功能,但我还是学了一些。

这是我的主意:

我要单击“交互式报表”表中的复选框,并且该复选框所在的特定单元格的背景应更改为其他颜色。

通过使用它确实可以工作,但是它会更改所有具有“ u-tC”类的单元格:

$('td.u-tC').addClass('changeBackground')

我一直在尝试使用:has()函数来确切指定我要更改的单元格,但是它不起作用,至少不是我想要的方式。我要更改的单元格与众不同之处在于,它内部具有特定的“值”属性,其中包含我想用作添加类条件的数据。

<td class=" u-tC" headers="lpb2_id">
     <input type="checkbox" name="f01" value="2_5800">
</td>

这是我想出的代码。它有效,但是我不知道如何在此处使用条件。我已经上网了,但没有尝试过诸如:contain():find()之类的尝试。

$('td.u-tC').has('input').addClass('changeBackground');

2 个答案:

答案 0 :(得分:1)

您可以在has()中使用属性选择器来过滤出正确的输入

$('td.u-tC').has('input[value="2_4900"]').addClass('changeBackground');

但这听起来像是触发更改的复选框,所以您可以在更改复选框时更改父单元格

类似

$('td.u-tC :checkbox').change(function(){
     if(this.value === "2_4900"){
         $(this).parent().toggleClass('changeBackground', this.checked)
     }
})

答案 1 :(得分:0)

所以,我花了一段时间,但我发现了一些问题。通过Javascript本身,我找不到解决方案,尽管我是通过使用JQuery来解决的:

$("#"+phone_id_string).addClass('addbackground');

phone_id_string参数是使用我用于标识要更改的单元格所需的信息构建的。我决定为此创建一个字符串,因为它看起来更加简洁明了:

var phone_id_string = 'phone_id_' + P100_PK.value;

这还要求我单击的复选框的ID中具有该表中的主键,该ID看起来像这样,在带有'f01_' || pk的部分中:

apex_item.checkbox (1, pk, decode(column_name,null,null,'CHECKED'), null, null, 'f01_' || pk) as lpb1

这将创建一个动态生成的ID,以确保这些列中的每一列都可以安全地关联到我想要的行。由于我在交互式报表中都使用了它,因此行号可能会更改,并且由于该疏忽我的功能将失败。现在,它可以确保无论过滤器或页面如何,都能保证找到我想要更改的正确列和行。

我希望它能对有人尝试这样的事情有所帮助。