使用window.open更改href

时间:2011-05-03 20:12:54

标签: javascript jquery jquery-plugins

我正在使用jgfeed来使用jquery来检索一个feed。它运作良好。 它显示了所有标题和链接。

这是代码:

        $.jGFeed('http://www.link.org/feed',
    function(feeds){
        if(!feeds){
            alert('No network');
        }
        for(var i=0;i<feeds.entries.length;i++){
            var entry = feeds.entries[i];
            var title = entry.title;
            var link = entry.link;              

            var html = "<ul class='pageitem'><li class='textbox'><span class='header'>" + title + "</span></li><li class='menu'><a href='" + link + "'><span class='name'>Read more</span><span class='arrow'></span></a></li></ul>";

            $("#feedContent").append($(html));
        }
    }, 20);

在html中:

<div id="feedContent"></div>

但我需要做一个window.open的每个链接而不是href。我测试了很多东西,但我不能这样做......

任何帮助?

3 个答案:

答案 0 :(得分:1)

由于你正在使用jQuery,你可以为列表中的链接设置自己的事件处理程序。

$('.pageitem').delegate('a', 'click', function(e) {
   window.open( $(this).attr('href'), 'popup' );

   e.preventDefault();
});

请注意,我们使用的是$.delegate()而不是$.click()。这是因为我们正在处理的<a>标记在页面加载时不存在。使用delegate()可确保列表中的所有未来<a>标记都获得事件处理程序。

答案 1 :(得分:1)

我建议保留href,以防万一窗口出现问题。

您只需在html字符串中附加的每个链接上添加一个类,然后在追加它之后,将click事件应用于该类:

   $.jGFeed('http://www.link.org/feed',
function(feeds){
    if(!feeds){
        alert('No network');
    }
    for(var i=0;i<feeds.entries.length;i++){
        var entry = feeds.entries[i];
        var title = entry.title;
        var link = entry.link;              

        var html = "<ul class='pageitem'><li class='textbox'><span class='header'>" + title + "</span></li><li class='menu'><a href='" + link + "' class="external-link"><span class='name'>Read more</span><span class='arrow'></span></a></li></ul>";

        $("#feedContent").append($(html));
        $('.external-link').click(function() {
          window.open($(this).attr('href'), 'My_Window', 'width=800,height=600');
          return false;
        });
    }
}, 20);

答案 2 :(得分:0)

var html = "<ul class='pageitem'>" + 
           "  <li class='textbox'>" + 
           "   <span class='header'>" + title + "</span>" + 
           "  </li>" + 
           "  <li class='menu'>" + 

           "    <a href='" + link + "' target='new'>"; // <<-- Look here. Make 
          //this target unique if each link should open in its own page. use one 
          //target like "new" to open all links in one separate page.

    html +="      <span class='name'>Read more</span>" + 
           "      <span class='arrow'></span>" + 
           "    </a>" + 
           "  </li>" + 
           "</ul>";