[英]Reload my script after AJAX called in plugin wordpress
I am developing my plugin with content I show below: 我正在使用以下内容开发我的插件:
IN index.php 在index.php
<?php
//I REGISTER BOOTSTRAP AND MY JQUERY FUNCTIONS
add_action('wp_enqueue_scripts', 'ln_reg_css_and_js');
function ln_reg_css_and_js()
{
if(is_single())
{
wp_enqueue_style('boot_css', plugins_url('inc/bootstrap.css',__FILE__ ));
}
wp_enqueue_script('boot_js', plugins_url('inc/bootstrap.js',__FILE__ ));
wp_enqueue_script('ln_script', plugins_url('inc/main_script.js', __FILE__), ['jquery'], false, true);
wp_localize_script( 'ln_script', 'myfunc', ['ajax_url' => admin_url( 'admin-ajax.php' )] );
}
//I USE SHORTCODE FOR MY CONTENTS
add_shortcode('my_code', 'ln_my_short_code');
function ln_my_short_code()
{
//I USE A SIMPLE LINK TO SENT IT'S VALUE BY AJAX AND A <DIV> TAG TO SHOW MY MODAL
return "<div id='ln_modal_show'></div><a href='#' class='ln_myLink' data-target='$post_id'>Click me</a>";
}
/* MY FUNCTION TO CREAT AND CALL AJAX */
add_action( 'wp_ajax_nopriv_ln_handle_modal', 'ln_handle_modal');
add_action( 'wp_ajax_ln_handle_modal', 'ln_handle_modal');
function ln_handle_modal()
{
$name = $_POST['name'];
$post_id = $_POST['post_id'];
$class_name = $_POST['class_name'];
ln_include_path('main_modal.php');
$ln_modal = new LN_Modal($name, $class_name, $post_id);
echo $ln_modal->get_ln_modal();
exit();
}
IN main_modal.php 在main_modal.php中
/* I HAVE A CLASS HERE, BUT WE WILL JUMP TO MAIN FUNCTION */ / *我这里有一个课程,但我们将跳至主要功能* /
<?php
class LN_Modal
{
/* ........... */
/* YES, THIS IS MY PROPLEM, HOPE YOU WILL CONTINUE READING */
public function get_ln_modal
{
//HERE I HAVE AN EXAMPLE, ALMOST LIKE MY REAL CODE
// I USE A TOOLTIP INSIDE MY MODAL, BUT WHEN MODAL SHOWN, THE TOOLTIP NOT WORKS. IT'S LOOKS LIKE MY JQUERY CODE HAS STOP RUNNING AFTER AJAX WAS CALLED
$tooltip = "<div class='modal-body'>
<button type='button' class='btn btn-default' data-toggle='tooltip' data-placement='right' title='Show it'>
Tooltip in right</button>";";
return "<div class='modal fade' id='ln_Modal' tabindex='-1' role='dialog' aria-labelledby='myModalLabel' aria-hidden='true'>
<div class='modal-dialog modal-lg'>
<div class='modal-content'>
<div class='modal-header'>
<button type='button' class='close' data-dismiss='modal'><span aria-hidden='true'>×</span><span class='sr-only'>Close</span></button>
<h4 class='modal-title' id='myModalLabel'><center>$modal_title</center></h4>
</div>
</button>
$tooltip
$content
</div>
<div class='modal-footer'>
<center><button type='button' class='btn btn-primary' data-dismiss='modal'>ĐÓNG THÔNG TIN</button></center>
</div>
</div>
</div>
</div>";
}
}
AND IN MY main_script 在我的main_script中
/* I USED TWO FUNCTIONS HERE, ONE FOR CLICKING A LINK AND SENT AJAX REQUEST, ONE FOR SHOWS TOOLTIP / *我在这里使用了两个功能,一个用于单击链接并发送AJAX请求,一个用于显示TOOLTIP
jQuery(document). ready(function(){
jQuery(".ln_myLink"). click(function(){
var name = jQuery(this). html();
var post_id = jQuery(this). attr('data-target');
var class_name = jQuery(this). attr('class');
//Sent data
jQuery.ajax({
url : myfunc.ajax_url,
type : 'post',
data : {
action : 'ln_handle_modal',
name : name,
post_id : post_id,
class_name : class_name
},
success : function(result){
jQuery('#ln_modal_show').html(result);
jQuery('#ln_Modal').modal('show');
}
});
});
});
jQuery(function(){
jQuery('[data-toggle="tooltip"]').tooltip();
});
The modal is shown good, but tooltip is not work. 模态显示良好,但工具提示不起作用。
You need to initialize tooltip on ajax success event. 您需要在ajax成功事件上初始化工具提示。 Try this in ajax success:
试试这个成功的ajax:
success : function(result){
jQuery('#ln_modal_show').html(result);
jQuery('#ln_Modal').modal('show');
jQuery('[data-toggle="tooltip"]').tooltip(); // intialize tooltip on success
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.