2014-05-02 55 views
0

我有一些引導模式需要加載遠程內容而不是點擊,但是當頁面加載時。要嘗試完成此操作,我有一個php變量,它動態地抓取正確的url,然後將它們作爲段落標記放在頁面中。Bootstrap3使用jQuery的遠程內容

像這樣

<?=$page = 'dynamic string grabbing from url and other places'?> 
<p class="valu"><?= $page ?></p> 

,然後我設置的jQuery的模態抓住那根繩子,然後用正確的內容加載模式,但似乎有獲得正確的頁面的問題。它只是重新加載它被重定向到的頁面。

jQuery的我看起來像這樣

var val = $('valu').text(); 

$(window).load(function(){ 
    event.preventDefault(); 
    var myModal = $('.largeModal'); 
    var modalBody = myModal.find('.modal-content'); 
    modalBody.load(val); 
    myModal.modal('show'); 
}); 

現在,如果我把modalBody.load內直接串似乎工作,但我真的需要它是可變的。我認爲也許它沒有看到文本是一個字符串,這就是爲什麼我沒有工作,但既沒有將該值作爲字符串進行轉換,也沒有將引號連接在其周圍起作用。

任何幫助將不勝感激!

+0

變種VAL = document.getElementsByClassName( 'VALU')的textContent; - >這比使用jQuery更好,因爲這是它的本地使用 – HellBaby

+0

@HellBaby這不是更好,jQuery也使用本機JS。事實上,jQuery更好用,因爲它像*跨瀏覽器兼容*一樣。除此之外,jQuery選擇器返回可以在腳本中稍後使用的jQuery對象。 – DanFromGermany

+0

@DanFromGermany不是更好的使用jQuery原因而是直接調用你的元素,你在jQuery中傳遞你的請求並解析它,之後調用與我的版本相同的東西...所以jQuery在性能上失分並在cross上獲勝-browser ...另外,標準的js返回對象,因爲js是一個對象的基礎語言 – HellBaby

回答

2

您應該在load事件中聲明您的val屬性。 你也有你的選擇一個錯字,你忘了.

$(window).load(function(){ 
    var val = $('.valu').text(); 
    var myModal = $('.largeModal'); 
    var modalBody = myModal.find('.modal-content'); 
    modalBody.load(val); 
    myModal.modal('show'); 
}); 

PS。它總是建議使用適當的PHP代碼,而不是短期的手<?php //something ?>

+0

不幸的是,這似乎並沒有工作... – zazvorniki

+0

對不起,我已經做了編輯,現在嘗試(我意識到錯字) – haxxxton

+0

@zazvorniki做了編輯工作? – haxxxton

0

作爲一個可能更好的解決方案,你可以在模式本身設置的URL在屬性data-remote,就像這樣:

<div class="modal fade hide" id="myModal" data-remote="<?= $page ?>"> 

這將加載您的內容,而你所要做的就是顯示模式:

$(window).load(function(){ 
    $('#myModal').modal('show'); 
}); 

以下文檔給你更多的信息關於經由data-屬性傳遞選項:

Bootstrap

+0

我實際上不能在這種情況下使用這個,因爲我在幀(不是我的主意!)這樣做。這就是爲什麼在我的問題中,我說我試圖通過jQuery來做到這一點。在另一種情況下,這將是正確的解決方案。 – zazvorniki

+0

@zazvorniki好吧。它看起來雖然'$('.val'')與$('。largeModal')'在同一個框架中。否則,你將無法像這樣訪問它們。你確定你無法填充模態元素的HTML而不是段落嗎? – happyjack