在表格单元格中查找单词,然后从下一个单元格中提取文本

时间:2014-05-23 19:41:34

标签: javascript jquery json

请看一下 Fiddle example 。我正在使用ajax脚本来解析JSON文件。 JSON文件中的一个项目(B项)包含单词" Sodium"在它的表中,我可以使用此脚本打印表:

$.ajax({
    url: "url.json",
    success: function (data) {

        $(data.query.results.json.json).each(function (index, item) {         
         var title = item.title;
         var table = item.table; 
            if (table.indexOf("Sodium") >= 0){
         $('.'+ title+'table').html(''+table+'')
            }
        });
    },
    error: function () {}
});

因为它可以找到" Sodium"在表格中,我想知道是否可以找到该单词所在的td,然后找到其下一个最接近的td以提取钠量,在这种情况下为{{1} }?像1200 mg之类的东西会起作用吗?但是如何选择选择器呢?

JSON文件

.closest('td').text();

表格结构:

[{"title":"A","table":"<table class=\"tablesorter\"><thead><tr><td >Ingredient<\/td><td >Amount<\/td><td>% Daily Value**<\/td><\/tr><\/thead><tbody><tr><td>Calories<\/td><td>10<\/td><td>&nbsp;<\/td><\/tr><tr><td>Total Carbohydrate<\/td><td>2g<\/td><td>&lt;1<\/td><\/tr><tr><td>Vitamin C<\/td><td>110mg<\/td><td>4<\/td><\/tr><tr><td>Potassium<\/td><td>235mg<\/td><td>6<\/td><\/tr><tr><td>Omega 6<\/td><td>1100mg<\/td><td>*<\/td><\/tr><tr><td>Vitamin B<\/td><td>1200mg<\/td><td>*<\/td><\/tr><tr><td>Vitamin E<\/td><td>300mg<\/td><td>*<\/td><\/tr><\/tbody><\/table>"},{"title":"B","table":"<table class=\"tablesorter\"><thead><tr><td >Ingredient<\/td><td >Amount<\/td><td>% Daily Value**<\/td><\/tr><\/thead><tbody><tr><td>Calories<\/td><td>10<\/td><td>&nbsp;<\/td><\/tr><tr><td>Total Carbohydrate<\/td><td>2g<\/td><td>&lt;1<\/td><\/tr><tr><td>Vitamin C<\/td><td>110mg<\/td><td>4<\/td><\/tr><tr><td>Potassium<\/td><td>245mg<\/td><td>6<\/td><\/tr><tr><td>Fish Oil<\/td><td>1100mg<\/td><td>*<\/td><\/tr><tr><td>Sodium (from Kitchen Salt)<\/td><td>1200mg<\/td><td>*<\/td><\/tr><tr><td>Vitamin E<\/td><td>300mg<\/td><td>*<\/td><\/tr><\/tbody><\/table>"}]

1 个答案:

答案 0 :(得分:2)

您只需使用jQuery :contains()选择器搜索已解析的HTML:

$.ajax({
    url: "url.json",
    success: function (data) {

        $(data.query.results.json.json).each(function (index, item) {         
            var title = item.title;
            var table = item.table; 
            if (table.indexOf("Sodium") >= 0) {
                $('.'+ title+'table').html(''+table+'');
                alert($('.'+title+'table').find('td:contains(Sodium)').next().html());
            }
        });
    },
    error: function () {}
});

Demo

该提醒通知会在文本中包含td的内容之后提醒Sodium的内容。

相关问题