jQuery .load () - получение содержимого td из DOM - PullRequest
0 голосов
/ 05 марта 2012

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

$(document).ready(function() {
  $(function(){
    $('#result_row').load('schedule.html #schedule_list tr:eq(1)',function(){
        var date = $('td:eq(0)',this);
        $('#date').html(date);
        var title = $('td:eq(0)',this);
        $('#title').html(title);
        var speaker = $('td:eq(0)',this);
        $('#speaker').html(speaker);
    });             
  }); 
});

, а затем у меня есть <div class= "upcoming"> Next Talk: <span id="speaker"></span> - <span id="title"></span> (<span id="date"></span>) </div> <span id="result_row"></span>

Так что это работает до определенного момента, но у меня есть отчетливое ощущение, что я делаю это неэффективно (илинеправильно) так как я новичок в jQuery.В частности, наличие пустого <span id="result_row"> кажется неправильным.Что еще более важно, он также импортирует теги <td> в элементы <span>, которых я хотел бы избежать.Все попытки к внутреннему HTML не увенчались успехом (например, var date = $('td:eq(0)',this).innerHTML;

Спасибо за любую помощь,

Ник

РЕДАКТИРОВАТЬ : так что теперь я могу сделать это трираз

var date = $('td:eq(0)',this).text();
$('#date').text(date);

, чтобы избежать получения тегов <td>. Или я могу сделать это

var data = $.find('td',this);
$('#date').html(data[0]);
$('#speaker').html(data[1]);
$('#title').html(data[2]);

, что, на мой взгляд, выглядит намного яснее (и я предполагаю, что последние три строки могут бытьсделано в одном). К сожалению .text () не работает, поэтому я застрял с <td> в моем выводе.

Ответы [ 2 ]

1 голос
/ 05 марта 2012

Если вы просто хотите получить данные внутри td s, используйте .html() или .text(). например:

var date = $('td:eq(0)',this).html();

С точки зрения правильной работы, загрузка html со страницы (соскоб) редко делает это правильно. Вы должны получать данные из другого источника, такого как json, предоставленный и отформатированный сервером и т. Д. Но если вы должны это сделать, ваш код мне подходит:)

0 голосов
/ 05 марта 2012

С точки зрения эффективности, вот как я бы это сделал:

$(document).ready(function() {
    var resultRow = $('#resultRow');

    $.ajax({
        url: 'schedule.html'
    })
    .done(function(response) {
        var context = $('#schedule_list tr:eq(1)'),
            data = context.find('td:eq(0)');

        $('#date, #title, #speaker').html(data).appendTo(resultRow);
    });
});

Я заметил, что у вас было 2 document.ready с. Удален один из них.

...