jQuery选择器在当前元素之前定位控件

时间:2011-12-18 21:21:56

标签: jquery

我正在尝试选择右前角元素。当前元素是一个超链接,当单击时,它会将一些文本附加到超链接之前的“目标”。

这些控件在asp:repeater中,所以相同的序列反复重复,每个超链接都应该能够识别它上面的元素。

这是我的DOM截图

enter image description here

我只需要知道如何以这种方式选择元素!感谢

3 个答案:

答案 0 :(得分:3)

您可以使用previousSibling

var as = document.getElementsByTagName('a');

for (var i=0, len=as.length;i<len;i++){
    as[i].onclick = function(e){
        e.preventDefault();
        var previous;
        if (this.previousSibling.nodeName == '#text') {
            // the previousSibling was a textnode, comprising of the whitespace between elements
            previous = this.previousSibling.previousSibling;
        }
        else {
            previous = this.previousSibling;
        }
        previous.style.backgroundColor = 'yellow';
    };
}

JS Fiddle demo

或者使用jQuery的prev()

$('a').click(
    function(e){
        e.preventDefault();
        $(this).prev('div').css('background-color','yellow');
    });

JS Fiddle demo

参考文献:

答案 1 :(得分:2)

答案 2 :(得分:1)

我认为prev是您想要的解决方案。只是为了回答你的问题,如果你想要一个选择器,你可以像这样建立一个:

$.expr[':'].prev = function(o) {
    return $(o).prev();
};

并使用它:

$('a:prev').someMethod();  // which works exactly like $('a').prev().someMethod