Изменить href с помощью window.open - PullRequest
1 голос
/ 04 мая 2011

Я использую jgfeed для получения канала с помощью jquery. Это работает хорошо. Он показывает все заголовки и ссылки.

Это код:

        $.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 ]

1 голос
/ 04 мая 2011

Я рекомендую сохранить 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);
1 голос
/ 04 мая 2011

Поскольку вы используете jQuery, вы можете настроить собственный обработчик событий для ссылок в списке.

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

   e.preventDefault();
});

Обратите внимание, что мы используем $.delegate() вместо $.click(). Это связано с тем, что обрабатываемые нами теги <a> не существуют при загрузке страницы. Использование delegate() гарантирует, что все будущие теги <a> в списке получат обработчик событий.

0 голосов
/ 04 мая 2011
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>";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...