更新4:

这是我目前所拥有的:

var $elements = $('.dropdown');
var $lastElement = $elements.last();

$elements.slice(0, -1).each(function() {
    $(this).css('left', $(this).prev.position().left);
});

var $prev = $lastElement.prev();
$lastElement.css('left', $prev.position().left - ($prev.outerWidth() - $lastElement.outerWidth()));


这给了我:

Uncaught TypeError: Object function (d,e){var f=c.map(this,b,d);Za.test(a)||(e=d);if(e&&typeof e==="string")f=c.filter(e,f);f=this.length>1?c.unique(f):f;if((this.length>1||ab.test(e))&&$a.test(a))f=f.reverse();return this.pushStack(f,a,bb.call(arguments).join(","))} has no method 'position'
$.ajax.success homepage.htm:138
c.b.extend.each jquery.min.js:33
c.b.fn.b.each jquery.min.js:26
$.ajax.success homepage.htm:137
c.extend.handleSuccess jquery.min.js:142
c.extend.ajax.L.w.onreadystatechange jquery.min.js:141


因此,以上脚本中的某些内容没有position方法。



更新3:

这是我目前所拥有的:

var $ elements = $('。dropdown');
var $ lastElement = $ elements.last();

$ elements.slice(0,-1).each(function(){
    $(this).css('left',$(this).prev.position()。left);
});

var $ prev = $ lastElement.prev();
$ lastElement.css('left',$ prev.position()。left-($ prev.outerWidth()-$ lastElement.outerWidth()));

这给我一个function required错误。当我取出最后两行时,错误消失了,但问题仍未解决。



更新2:

这是HTML结构:

<div class="settings"><span id="spanSettings">Settings ▼</span></div>
<div class="dropdown">
    <a href="edit_profile.aspx"><div class="item"><div class="icon" style="background-image: url('http://intranet/img/profile_icon.png');"></div> Edit profile</div></a>
    <a href="manage_tabs.aspx"><div class="item"><div class="icon" style="background-image: url('http://intranet/img/tabs_icon.png');"></div> Tab settings</div></a>
</div>




更新1:

使用:$(this).css('left', $(this).prev().position().left);

我得到image 1

与:$(this).css('right', $(this).prev().position().right);

我得到image 2

我在image 3之后:

^图片3是photoshop的。



原始问题:

我有以下脚本,该脚本可更改具有dropdown类的任何html元素的位置

$('.dropdown').each(function() {
    $(this).css('left', $(this).prev().position().left);
});


如何修改此设置,以便它根据父级将所有dropdown都更改为左侧,最后一个除外,后者应与父级右位置对齐right

如果那不可能,我如何独立地改变他们的立场?而不是使用each函数?

最佳答案

您可以这样做:

var $elements = $('.dropdown'),
    $lastElement = $elements.last();

$elements.slice(0, -1).each(function() {
    $(this).css('left', $(this).prev().position().left);
});

$lastElement.css('right', $lastElement.prev().position().right);


更新:按照图片中所示对齐它(我假设它是关于最后一个元素的),您可以尝试:

var $prev = $lastElement.prev();
$lastElement.css('left', $prev.position().left - ($prev.outerWidth() - $lastElement.outerWidth()));

关于javascript - jQuery帮助.each函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6612701/

10-12 01:15