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

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

Social Associations {% for key, value in social_auth.items %} {{ key }} {% if value %} Disconnect from {{ key }} {% else %} Associate your account to {{ key }} {% endif %}
{% endfor %}

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

 
Social Associations twitter Disconnect from twitter
facebook Associate your account to facebook

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

不是最好的方式……

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

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

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