由于类,JQuery多个窗口打开

时间:2013-04-23 18:40:00

标签: jquery

一直试图找到一整天的解决方案并让我疯狂。我有一个通过XSLT编译的页面,当我点击Twitter社交链接分享有关文章的详细信息时,它会为每个类的实例打开一个新窗口,而不仅仅是单击的那个。

请您查看以下页面,然后点击其中一个Twitter链接:

http://search.stoneburndemo.com/search?q=a&btnG.x=-564&btnG.y=-178&filter=0&daterange_ddm=all&as_q=&site=default_collection&client=alhayat_production&output=xml_no_dtd&proxystylesheet=alhayat_production&lr=lang_ar&oe=UTF-8&ie=UTF-8&ud=1&proxyreload=1&sort=date%3AD%3AL%3Ad1&exclude_apps=1&tlen=88

这是我正在使用的代码:

<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+'&amp;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个新窗口来突出显示该问题。

2 个答案:

答案 0 :(得分:2)

  1. 你应该在CSS中保留表现形式的东西。在样式表中执行规则 .twitter_sl { cursor: pointer; }

  2. 您可以将点击事件修改为更精细,如下所示:

    $('.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 + '&amp;url=' + twitterOrigURL, '_blank', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=250,width=600');
    });
    
  3. 编辑:这是一个小提琴,它在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+'&amp;url='+twitterURL,'_blank',      'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=250,width=600');
});
});
</script>