一直试图找到一整天的解决方案并让我疯狂。我有一个通过XSLT编译的页面,当我点击Twitter社交链接分享有关文章的详细信息时,它会为每个类的实例打开一个新窗口,而不仅仅是单击的那个。
请您查看以下页面,然后点击其中一个Twitter链接:
这是我正在使用的代码:
<script>
$('.twitter_sl').find('a').css('cursor', 'pointer');
$('.twitter_sl').children('a').click(function(){
var twitterOrigURL = $(this).attr('title').replace(/\%20/g, '%2520'),
twitterURL = twitterOrigURL,
twitterText = $(this).attr('name');
window.open('http://www.twitter.com/share?text='+twitterText+'&url='+twitterURL,'_blank', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=250,width=600');
});
</script>
HTML标记是:
<td class="twitter_sl">
<a title="{$full_url}" name="{T}"><img src="http://daharchives.alhayat.com/images/t_logo.png" alt="Share on Twitter" height="25px" width="25px"/></a>
</td>
这个问题在Chrome中有点隐藏,因为它似乎阻止了除弹出窗口之外的所有窗口。 Firefox通过不阻止任何并打开10个新窗口来突出显示该问题。
答案 0 :(得分:2)
你应该在CSS中保留表现形式的东西。在样式表中执行规则
.twitter_sl { cursor: pointer; }
您可以将点击事件修改为更精细,如下所示:
$('.twitter_sl > a').on('click', function(){
var that = $(this),
twitterOrigURL = that.attr('title').replace(/\%20/g, '%2520'),
twitterText = that.attr('name');
window.open('http://www.twitter.com/share?text=' + twitterText + '&url=' + twitterOrigURL, '_blank', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=250,width=600');
});
编辑:这是一个小提琴,它在FF中运行得很好。 http://jsfiddle.net/5nC4q/3/
答案 1 :(得分:0)
我想通过使用.each()遍历链接,每个人都有“自己的点击”
<script>
$('.twitter_sl').find('a').css('cursor', 'pointer');
$('.twitter_sl').children('a').each(function(){
$(this).click(function(){
var twitterOrigURL = $(this).attr('title').replace(/\%20/g, '%2520'),
twitterURL = twitterOrigURL,
twitterText = $(this).attr('name');
window.open('http://www.twitter.com/share?text='+twitterText+'&url='+twitterURL,'_blank', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=250,width=600');
});
});
</script>