javascript点击更改href并在新窗口中打开

时间:2012-05-08 08:01:25

标签: javascript jquery django django-socialauth

我有一个Django项目,为用户提供将用户帐户与Twitter和Facebook等社交网络帐户相关联的可能性。这适用于Django Social Auth,它基本上提供了一个标签,以了解当前用户是否已经关联了帐户。它允许以下代码相应地显示URL:

<fieldset id="social_associations" class="">
    <legend>Social Associations</legend>

{% for key, value in social_auth.items %}
    <img src="/static/img/{{ key }}_icon.png" alt="{{ key }}" width="25" height="25" />
    {% if value %}
        <a href="/social/disconnect/{{ key }}">Disconnect from {{ key }}</a>
    {% else %}
        <a href="/social/login/{{ key }}">Associate your account to {{ key }}</a>
    {% endif %}
    <br />
{% endfor %}
</fieldset>

这是Django模板代码,执行时会给出以下html(当然显示的hrefs会根据用户的个人资料进行更改,如果该帐户与社交网络关联或不关联,这里我显示两个连接(用于Facebook)和断开(对于Twitter)URL:

<fieldset id="social_associations" class="">
<legend>Social Associations</legend>
<img width="25" height="25" alt="twitter" src="/static/img/twitter_icon.png">
<a href="/social/disconnect/twitter">Disconnect from twitter</a>
<br>
<img width="25" height="25" alt="facebook" src="/static/img/facebook_icon.png">
<a href="/social/login/facebook">Associate your account to facebook</a>
<br>
</fieldset>

这工作正常,但有各种缺点。首先,单击时,链接将通过打开关联/断开页面丢失当前导航。这可以通过不打开它们来解决,只是用javascript调用GET(如果存在的话)(我记得用javascript调用POST发送一些数据,GET也必须是可能的吗?)。然后另一个缺点是,当点击链接不自动更新时,必须重新加载页面。这可以通过将href更改为显示'disconnect'(如果它是'associate')和'associate'(如果它是'disconnect')并切换URL来解决。

1 个答案:

答案 0 :(得分:0)

不是最好的方式......

...但速度很快(使用jQuery)。您应该能够通过创建例如相应的ajax视图来改进它。

(未经测试的代码,但要提出想法)

$('a', '#social_associations').live('click', function(e){
    e.preventDefault();
    $('#social_associations').load($(this).attr('href') + ' #social_associations');
});