这就是我所拥有的。列表Web部件中的SharePoint 2010自定义视图。我有6个类别和4个子类别。项目不必具有子类别,但必须具有类别。
该视图显示一个空白子类别,旁边有数字。我正在尝试将click事件绑定到所有这些事件,但每次刷新页面时ID都会增加。基本ID为titl [0-9] * [0-9] 。然后还有我要检查的另一个ID,它是titl [0-9] * _ [0-9] 1 。
所以我尝试使用regex selector for jQuery并且它没有正确绑定。它找到了对象但没有正确绑定。
我需要它绑定到id然后能够触发下一个tone的onclick事件,即1_。然后检查它的文本是否为“”,如果是,则隐藏tbody。
我的代码:
$(":regex(id,titl[0-9]*-[0-9]_) td a").bind('click', function(){
var parent = $(this);
var child = $(this).next("tbody");
var grandchild = $(this).next("tbody td a");
//alert(parent + " | " + child + " | " + grandchild ); //always return undefined??
// Everything below works if I can get the IDs correct for child and grandchild
if($(grandchild).css('display')!='none'){
$(grandchild).click();
if($(grandchild).text()==" "){
$(child).hide();
};
};
});
答案 0 :(得分:1)
我强烈建议你需要重新考虑你的身份证 - 他们应该保持一致,真的。
如果你绝对必须使用变量ID,你可以在选择器中使用“id”属性和任何其他属性:
// Any element, ID starts with "titl"
$('[id^="titl"]')
为了捕捉并重复使用它,我真的建议您对自己的ID做错了。然而,为了完整性(虽然我不能强调你应该尽量避免使用它),基于此的东西应该是一个好的(哈哈,是的正确的)起点
// Long-winded messy hideous foul code
var $title = $('[id^="titl"]'),
title = $title.length && $title.eq(0).attr('id');
if (title !== 0)
{
$('#' + title + ' #' + title + '1 td a').html('Ow.');
}
答案 1 :(得分:0)
我不确定我是否会这样做,但你可以定位以titl
开头的任何ID,然后在函数内部以其他许多方式过滤ID:
$('[id^="titl["]').on('click', function() {
var check = this.id.charAt(10) == '_', //tenth character is underscore ?
parent = $(this),
child = $(this).next("tbody"),
grandchild = $(this).next("tbody td a");
if (check) {
//element matching second selectortype clicked
}else{
if (grandchild.is(':visible')){
grandchild.trigger('click');
if (grandchild.text()==" ") child.hide();
}
}
});
答案 2 :(得分:0)
如果你能控制你的ID,我同意重新考虑你的ID。即使你不这样做,StartsWith选择器也会为你提供所有更高级别的元素,你可以遍历到更低级别的元素。请记住,链接选择器意味着您可以匹配ID中类似的模式,而不关注实际的值。
另一个注意事项:我从来不需要使用jQuery进行正则表达式匹配。类似CSS3的选择器对于它来说太强大了。