使用jquery选择器获取未跟随图像的所有输入

时间:2013-08-20 09:13:29

标签: jquery jquery-selectors

我正在尝试创建一个选择器,它可以获得所有未出现验证错误的图像的输入元素。

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/

1 个答案:

答案 0 :(得分:2)

+选择器需要选择器两侧之间有空格。此外,您不需要$(document).find,您可以这样做:

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

Fiddle