jQuery使用类查找正确的选项卡

时间:2013-04-04 18:04:02

标签: jquery class tabs closest

这是我的问题,我有jquery UI,我也有一个错误发生在选项卡中,但我希望我的客户找到错误,而不必查看每个选项卡。我的代码应该做的是,如果验证错误是可见的,它将查找与类tabs-panel最接近的LI,然后找到附加到那个li tabs-1等的ID。然后将它放在它对应的Href旁边因为我发现了哪个div存在错误。是的,很疯狂。 appendTo在URL的末尾添加了感叹号,所以我知道这是问题选项卡,稍后我会添加一条消息,我可以做到这一点。谢谢!

$(document).ready(function(){
 var finderror = $('.validationError:visible').closest('div[class^="ui-tabs-panel"]').attr('id');
    if($('.validationError').is(':visible')) {
        $('li a[@href*=' + finderror + ']').appendTo('!');
    };

 });

1 个答案:

答案 0 :(得分:1)

可能是ui-tabs-panel类不是class属性值的第一部分。我认为选择器太具体IMO了,我会把它改成:

closest('div.ui-tabs-panel')

顺便说一句,你应该使用道具,而不是attr。

希望这有帮助。

P.S。而Floremin是正确的,它应该是Append,而不是AppendTo。

进一步编辑:您可能有多个验证错误,因此您实际上需要对它们执行各自的操作,如下所示:

$(document).ready(function(){
    $('.validationError:visible').each(function(i, e) {
        var finderror = $(e).closest('div.ui-tabs-panel').prop('id');
        $('li a[@href*=' + finderror + ']').removeClass("validationError").addClass("validationError");
    });
});

而不是感叹号,我会用一个班级来做。


工作代码!

    $('.validationError:visible').each(function(i, e) {
         var finderror = $(e).closest('div#tabs > div').prop('id');
    var errorInf = $('li a[href=#' + finderror + ']');
       $(errorInf).append('<span style="color: red; padding: 2px; font-size: 16px;">!</span>');
    });
});