我有一个选择框,在更改中使用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自身调用?如果是这样的话,可以解决这个问题吗?
答案 0 :(得分:1)
这通常被视为代码注入,并且不会被任何现代浏览器执行。
将渲染/事件逻辑带回JQuery,并使用PHP根据请求提供数据。只要您使用浏览器的Javascript引擎进行渲染和事件处理,那么一切都会很好。