2011-01-25 30 views
1

嗨即时尝试加载一个div旁边的链接/按钮,如果未经身份验证的用户点击。div没有在正确的地方加载

我有以下几点:

$(function() { 

    $(".unauthenticated").click(function() { 
     ShowMessage($(this).attr("id"), "#unauthenticated-div") 
    }); 

    function ShowMessage(clickedItemId, divId) { 

     clickedItem = $("#" + clickedItemId); 
     var pos = clickedItem.offset(); 
     var width = clickedItem.width(); 

     $(divId).css({ 
      "left": pos.left + width + 10, 
      "top": pos.top + 10 
     }).show(); 
    } 
}); 

<div id="unauthenticated-div" title="Please Login" style="display: none;"> 
    <p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"> 
    </span>You must <a href="#" id="login-link">login</a>or <a href="/Account/Register/">Register</a>to do this</p> 
</div> 

它显示的股利,而不是旁边的被点击链接。当我通过代码时,pos和width是预期的。

+1

你需要以示与div的代码以及很难否则图片。 – jschorr 2011-01-25 21:27:07

回答

3

您设置位置的元素是否将其position属性设置为absoluterelative

如果没有,请尝试设置它。

$(divId).css({ 
     "left": pos.left + width + 10, 
     "top": pos.top + 10, 
     "position":"absolute" 
    }).show(); 

而且,与HTML更新的问题不显示带班"unauthenticated"的元素。

不确定这是否是问题的一部分,但click正被分配到$(".unauthenticated")

0

如果div是position:relative,那么“left”和“top”只有含义,然后只相对于最内层的相对或绝对封闭div(或者如果没有body)。使用Firebug或IE开发工具栏检查...

1

请参阅帕特里克的答案设置绝对位置。顺便说一句,在第一个参数中传递你的对象可能会更好。

$(".unauthenticated").click(function() { 
    ShowMessage($(this), "#unauthenticated-div") 
}); 

function ShowMessage(clickedItem, divId) { 
    var pos = clickedItem.offset(); 
    var width = clickedItem.width(); 

    $(divId).css({ 
     "left": pos.left + width + 10, 
     "top": pos.top + 10 
    }).show(); 
}