1

我正在尝试制作一个选择器,以获取所有输入元素,这些元素后面没有带有验证错误的图像。

html:

<input id="target" type="submit" value="0" />
<input id="target1" type="submit" value="1" />
<input type="text" data-val="true" />
<input type="text" data-val="true" />
<input type="text" data-val="true" />
<input type="text" data-val="true" />
<input type="text" data-val="true" />

Jquery 与迭代(作品):

$("#target").click(function () {
    var errorTooltipIconURL = "xxx";
    $(document).find('[data-val="true"]').each(function () {
        if ($(this).next('.validation-error-tooltip-icon').length == 0) {
            $('<img src="' + errorTooltipIconURL + '" class="validation-error-tooltip-icon" style="visibility: hidden" />').insertAfter(this);
        }
    });
});

我尝试过的 Jquery 选择器(在最后一个之后不插入,因为它在最后一个输入之后没有另一个元素):

$("#target1").click(function () {
    var errorTooltipIconURL = "xxx";
    $(document).find('[data-val="true"]+:not(.validation-error-tooltip-icon)').each(function () {
        $('<img src="' + errorTooltipIconURL + '" class="validation-error-tooltip-icon" style="visibility: hidden" />').insertBefore(this);    
    });
});

这是一个可以玩的小提琴:http: //jsfiddle.net/TQMvh/1/

4

1 回答 1

2

选择器需要在+选择器两侧之间留有空间。另外,您不需要$(document).find,您可以简单地执行以下操作:

$('[data-val="true"] + :not(.validation-error-tooltip-icon)')

小提琴

于 2013-08-20T09:30:24.057 回答