Как обойти отсутствие успешного обратного вызова в ZRSSfeed? - PullRequest
0 голосов
/ 16 мая 2011

У меня есть страница канала, к которой нужно применить обработчик кликов для каждой ссылки в RSS-канале.

Я использую ZRSSfeed, который хорош, но он не будет выполнять обратные вызовы, поэтому функция .click () запускается задолго до поступления содержимого rss

здесь есть скрипка:

http://jsfiddle.net/PMtCN/

Большое спасибо

Ответы [ 3 ]

2 голосов
/ 16 мая 2011

Если я понимаю проблему, вы хотите прикрепить обработчик кликов к результату, но не знаете, когда контент загружен Если это так, просто используйте live :

Описание: прикрепить обработчик к событие для всех элементов, которые соответствуют текущий селектор, сейчас и в будущее.

http://jsfiddle.net/PMtCN/11/

 jQuery('#linkwidget a').live("click",function(){ 
    alert('Hello World');
    return false; 
  }); 
1 голос
/ 05 сентября 2012

В последней версии есть функция обратного вызова, так что теперь вы можете выполнять действия с элементами фида после его загрузки.

В приведенном ниже примере длина заголовка фида ограничена 14 символами:

$(document).ready(function () {
    $('#test').rssfeed('http://feeds.reuters.com/reuters/oddlyEnoughNews',{},function(e) {

        $('h4 a',e).each(function(i) {

            var title = $(this).text();
            if (title.length > 14) $(this).text(title.substring(0,14)+'...');
        });
    });
});

http://www.zazar.net/developers/jquery/zrssfeed

0 голосов
/ 16 мая 2011

Если вы не можете использовать обратный вызов и хотите индивидуально применить функцию щелчка к каждому узлу соответствия, вы можете использовать код, подобный этому,

var COM_MYSITE_RSS_CHECK;
var COM_MYSITE_RSS_CHECK_COUNT = 0;
var COM_MYSITE_RSS_CHECK_FREQ = 100;
var COM_MYSITE_RSS_CHECK_MAX = 100;
function wait_for_rss(){
    if (jQuery('#linkwidget a').length > 0 || COM_MYSITE_RSS_CHECK_COUNT > COM_MYSITE_RSS_CHECK_MAX  )
    {

        clearInterval(COM_MYSITE_RSS_CHECK);
         jQuery('#linkwidget a').click(function(){ 
            alert('Hello World');
            return false; 
          }); 

    }
    COM_MYSITE_RSS_CHECK_COUNT++;
}

и затем после вызова ajax-запроса

COM_MYSITE_RSS_CHECK = setInterval(wait_for_rss, COM_MYSITE_RSS_CHECK_FREQ);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...