2013-03-30 1 views
0

Я пытаюсь заменить div page_title содержимым свойства name. Ниже приводится то, что у меня есть, но это не сработает. Я новичок в jQuery. Я использую jquery Mobile.Заменить элемент HTML с помощью функции

<script> 
var siteData = { 
    "name": "Site Name", 
    "logo": "", 
    "theme": "b", 
    "fullSiteLink": "http://www.google.com", 
    "pages": [{ 
      "id": "1364668689503", 
      "name": "Page Title", 
      "type": "basic", 
      "components": { 
       "img": "", 
       "text": "Page content" 
      } 
     }, 
    }] 
} 
</script> 

UPDATE

$(document).ready(function(siteData) { 
    //site name 
    $('#page_title').html(siteData["name"]); 
}); 
+0

Попробуйте siteData [ «имя»] вместо сайта [ «имя»] – yckart

+0

Так я обновил этот вопрос, но он по-прежнему не тянет на имя из JSON. Вместо этого в html-разметке теперь пусто. – MarkO

+2

В вашем вопросе ничего не связано с JSON. JSON - это * формат обмена данными *, например XML. То, что у вас есть, - это простой объектный литерал. Пожалуйста, укажите, что * «не работает» *. Это не является полезным описанием проблемы/ошибки. –

ответ

2

Вот рабочий jsFiddle пример: http://jsfiddle.net/Gajotres/gMAf3/

$(document).on('pagebeforeshow', '#index', function(){  
    $(this).find('[data-role="header"] h3').html(siteData.name); 
}); 

    var siteData = { 


     "name": "Site Name", 
      "logo": "", 
      "theme": "b", 
      "fullSiteLink": "http://www.google.com", 
      "pages": [ 
     { 
      "id": "1364668689503", 
      "name": "Page Title", 
      "type": "basic", 
      "components": { 
       "img": "", 
       "text": "Page content" 
      } 
     }  ] 


    } 

Не используйте документ готовый с JQuery Mobile, он обычно срабатывать переда страница вставляется DOM. Чтобы узнать больше об этой проблеме, посмотрите на это ARTICLE, или найти его HERE.

+1

Учитывая, что вы не меняете HTML, почему бы просто не использовать ['text()'] (http://api.jquery.com/text/)? –

+0

В этом случае я могу использовать его, потому что это простой текст. Причина для html() заключается в том, чтобы быть в безопасности, люди обычно не понимают разницы между text() и html(). Поэтому, когда они начинают динамически создавать jQM-страницу с текстом(), возникает проблема. – Gajotres

+2

Ну, так как он [не делает существенных различий] (http://jsperf.com/brief-look-at-html-vs-text), во всяком случае, на самом деле не стоит беспокоиться о том, что я думаю. На самом деле было просто любопытно. знак равно –

1
$(document).ready(function() { 

    // Declare the object here 
    var siteData = {....}; 

    // Set the title 
    $('#page_title').text(siteData["name"]); 
}); 
Смежные вопросы