是否可以在先前执行的jquery

时间:2017-03-26 01:29:32

标签: php jquery

我有一个选择框,在更改中使用jquery $.post()来解析php中的数据并通过postit.done()返回结果并将其呈现在指定的div中。这很好。

问题在于返回的解析结果中有一个工具提示类,假设在悬停时响应,但没有。

这是选择框的代码:

# selector wrap
    # ------------------------------------------------
    echo '<div class="selector-wrap row">';
        echo '<div class="col_12">';
        echo '<label>Available Classes</label><br>';
        echo '<select id="classCat" name="classCat" class="expand">';
            echo '<option value="0">Select Classes Category</option>';

                /* loop though classes data files categories to populate options */
                foreach(glob($level.'css/classes/data/*.dat') as $file) {
                    $id = $file;
                    $title = basename(str_replace("-"," ",str_replace(".dat","",$id)));

                    echo '<option value="'.$id.'">'.ucwords($title).'</option>';
                }

        echo '</select>';       
        echo '</div>';
    echo '</div>';

    # render desired content
    # ------------------------------------------------
    echo '<div class="showClasses renderQuery"></div>';

以下是jQuery:

/* parse get special caracters category */
    $("#classCat").change(function(){
        var id = $(this).val();
        var url = siteURL + 'css/classes/parse-class-categories.php';
        var postit = $.post( url, {id:id});     
        postit.done(function( data ) {$('.showClasses').html(data);});      
    });

这是解析php文件:

<?php   
    /* get content for this category */
    $id = $_POST['id'];
    $content = file_get_contents($id);
    $cleanit = substr($content, -1); if($cleanit == ','){$content = substr($content, 0, -1);}

    /* if no cat selected */
    if(empty($id)){echo '';}    

    /* render selected category */
    elseif(!empty($id)){        

        echo '<div class="slideContnetWrap clearfix">'; 

            /* loop through this category and render classes */
            $getClasses = explode("\r",$content);
            foreach($getClasses as $getClass){

                $pcs = explode("|",$getClass); $this_class = $pcs[0]; $about = $pcs[1];

                echo '<div class="col_12">';

                    echo '<div class="rendered-label" style="font-size: 12px;">';
                        echo '<span class="tooltip-left" title="'.$about.'"><i class="fa fa-info-circle"></i> </span>';         
                        echo ' <span class="renderHead">'.ucwords(str_replace("-"," ",$this_class)).'</span>';
                    echo '</div>';

                    echo '<div class="getItInput">';
                        echo '<input type"text" class="expand" ';
                        echo 'onClick="this.setSelectionRange(0, this.value.length);" value="'.$this_class.'">';
                    echo '</div>';

                echo '</div>';              
            }           
        echo '</div>';
    }
?>

php解析文件中的这一行假设在悬停时呈现工具提示但不会...在其他区域中以其他方式工作。

echo '<span class="tooltip-left" title="'.$about.'"><i class="fa fa-info-circle"></i> </span>';

我是自学成才,并没有完全掌握DOM如何工作......这是因为解析文件在初始加载期间没有加载,并且在页面加载后由jquery自身调用?如果是这样的话,可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

这通常被视为代码注入,并且不会被任何现代浏览器执行。

将渲染/事件逻辑带回JQuery,并使用PHP根据请求提供数据。只要您使用浏览器的Javascript引擎进行渲染和事件处理,那么一切都会很好。