尽管我不确定自己是否正确使用了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');
答案 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,以确保这些列中的每一列都可以安全地关联到我想要的行。由于我在交互式报表中都使用了它,因此行号可能会更改,并且由于该疏忽我的功能将失败。现在,它可以确保无论过滤器或页面如何,都能保证找到我想要更改的正确列和行。
我希望它能对有人尝试这样的事情有所帮助。