2012-04-11 63 views
-1

如何在foreach循環中使用simplemodal,以便它不重複相同的信息?SimpleModal Foreach Loop動態內容

實施例:

foreach($ret as $v) 
{ 
     <div id='osx-modal'> 
     <input type='button' name='osx' value='View' class='osx demo'/> 
     </div> 

     <div id="osx-modal-content"> 
      <div class="close"><a href="#" class="simplemodal-close">x</a></div> 
       <div id="osx-modal-data">                        
        <div id="toon_box"> 

         <div id="toon_name"> 
          <?php echo $v['toon_name'];?> 
         </div> 

      <div id="toon_avatar"> 
          <?php echo '<img src="' . $v['avatar'] . '" alt="" />';?> 
         </div> 
        </div> 
       </div> 
} 

的元數據從網站上的用戶拉動,並顯示爲在分開的情態動詞的每個用戶的元數據。澄清,假設foreach重複10次,因爲數據庫中有10個用戶。這將爲每個用戶創建10個單獨的按鈕,當您單擊模式框時彈出其中的數據。

問題是,當你點擊每個按鈕時,它在每個模式框中的相同用戶。你將如何設置,以便每個模式框顯示正確的用戶元數據。我已經檢查過,在simplemodal.js中,持久性是否設置爲false,它是。

+0

你是什麼意思動態toon_names?你有沒有考慮過使用'MODAL-AJAX INTEGRATION'?更多地解釋動態這個詞? – Baba 2012-04-11 22:51:58

+0

已更新的問題。我的意思是不同的元數據包含在每個模式框中,而不是每個模式框中重複的元數據。 – 2012-04-11 23:40:55

回答

0

終於得到它的工作多虧standup75!

jQuery(function ($) { 
    var OSX = { 
     container: null, 
     init: function() { 
       $("[name=osx]").click(function (e) { 
       e.preventDefault(); 
       $(this).parent().next().modal({ 
        overlayId: 'osx-overlay', 
        containerId: 'osx-container', 
        closeHTML: null, 
        minHeight: 80, 
        opacity: 65, 
        position: ['0',], 
        overlayClose: true, 
        onOpen: OSX.open, 
        onClose: OSX.close 
       }); 
      }); 
     }, 
+0

你能解釋你是如何使用它來使它工作的嗎?這個功能? – Alpdog14 2012-08-20 18:46:49

1

您有在同一個模型箱相同的元數據的原因是因爲這條線的使用class代碼

<input type='button' name='osx' value='View' class='osx demo'/> 

是非常通用的,所以你應該使用id而不是每個按鈕都有自己的uniqid

<input type='button' name='osx' value='View' id='os1'/> 
<input type='button' name='osx' value='View' id='os2'/> 

現在你<div id="osx-modal-content">也應該是這樣的

<div id="osx-modal-content1"> 
<div id="osx-modal-content2"> 

javascript是這樣

$("os1").addEvent("click", function(){ 
    var SM = new SimpleModal(); 
     SM.show({ 
     "title":"Title", 
     "contents": $("#osx-modal-content1").html() 
     }); 
}); 


$("os2").addEvent("click", function(){ 
    var SM = new SimpleModal(); 
     SM.show({ 
     "title":"Title", 
     "contents": $("#osx-modal-content2").html() 
     }); 
}); 

可以用看到的一切方式映射???這是你實現誰的每個內容中的每個模型

讓我知道如果你需要更多的信息

編輯1例

<?php 
$x = 0; 
foreach ($ret as $v) { 
    $x ++; 
    $content = " 
    <script type=\"text/javascript\">addModal($x)</script> 
    <div id='osx-modal'> 
     <input type='button' name='osx' value='View' id='osx{$x}'/> 
     </div> 
     <div id=\"osx-modal-content{$x}\"> 
      <div class=\"close\"><a href=\"#\" class=\"simplemodal-close\">x</a></div> 
       <div id=\"osx-modal-data\">                        
        <div id=\"toon_box\"> 
         <div id=\"toon_name\"> 
         {$v['toon_name']} 
         </div> 
      <div id=\"toon_avatar\"> 
          <img src=\"{$v['avatar']}\" alt=\"\" /> 
         </div> 
        </div> 
       </div>"; 

} 

?> 

<script type="text/javascript"> 
function addModal(x) 
{ 

    $("osx" + x).addEvent("click", function(){ 
      var SM = new SimpleModal(); 
       SM.show({ 
       "title":"Title", 
       "contents": $("#osx-modal-content" + x).html() 
       }); 
     }); 

} 
</script> 
+0

完整腳本從wp_user_database中提取user_meta,並且該腳本位於一個循環內。今天可能會有10個用戶,明天20點。我需要一種方法來自動創建javascript中的不同id名稱。 – 2012-04-12 00:04:35

+0

感謝您的幫助巴巴不幸的是我無法將其與我的代碼整合,我花了幾個小時試圖讓它工作,但沒有成功。然而,你已經給了我一個想法,我嘗試了一種不同的方法,我「認爲」它接近工作,但證明了我認爲的一個新問題... – 2012-04-12 15:40:11