jQuery UI Multiple Dialog и PHP - PullRequest
       10

jQuery UI Multiple Dialog и PHP

2 голосов
/ 21 сентября 2011

У меня проблемы с наличием нескольких диалогов на одной странице и связыванием их с идентификаторами, которые генерируются PHP.Я хотел бы, чтобы несколько изображений были ссылками на диалог, содержащий контент ... вот мой код:

PHP:

<div id="children">
<?php 


$children = array_values(get_pages(array('child_of' => $post->ID)));

foreach( $children as $ch => $child ){
    echo '<div id="dialog-'.$child->ID.'" title="Basic dialog">';
    echo $child->post_content;
    echo '</div>';
}

foreach( $children as $ch => $child ){
    $attachments = get_posts(array('numberposts'=> 1, 'post_parent' => $child->ID, 'post_type' => 'attachment', 'order' => 'DESC', 'orderby' => 'post_date'));
    //print_r($attachments);
    foreach( $attachments as $a => $attachment ){
        echo '<a href="#opener-'.$child->ID.'" id="opener-'.$child->ID.'" >';
        echo '<img class="attachment-thumb" src="'.$attachment->guid.'" width="150" height="150" />';
        echo '</a> ';
    }
}
    //print_r($children)    
?>

Теперь я понимаю, что мойjQuery производит каждый идентификатор с 1,2,3, а не с реальными идентификаторами PHP, но я не знаю, как его настроить, чтобы jQuery ссылался на соответствующие диалоги и средства открытия.Нужно ли использовать Ajax?

jQuery:

<script>
$(function() {
var options = {
        autoOpen: false,
        width: 'auto',
        modal: true
};
var num = 1;
$("#children").each(function() {
        var dlg = $('#dialog-' + num).dialog(options);
        $('#opener-' + num).click(function() {
                dlg.dialog("open");
                return false;
        });
        num = num + 1;
});
});
</script>
</div>

Ответы [ 2 ]

0 голосов
/ 21 сентября 2011
0 голосов
/ 21 сентября 2011

$ ("# children"). Каждый выполняется только один раз, для одного div "children". Таким образом, num никогда не становится больше 1 в этой функции. Вы, вероятно, захотите $("#children div").each, который будет выполняться для всех дочерних элементов div детей.

(Ну, технически num становится 2 (после выполнения 1) ... но никогда не выполняется, пока 2.)

...