本质上,我正在尝试调用动态创建的函数(其名称可能会根据$.get
调用而改变)
我有一个 PHP 文件,它生成一个 JavaScript 函数,如下所示:
小部件.php
<?PHP $widgetID=$_GET["w"]; ?>
<script type="text/javascript">
$(document).ready(function() {
function <?PHP echo $widgetID; ?>Hide(){
$("#<?PHP echo $widgetID; ?>Object").attr("display", "none");
}
</script>
主页包含将其加载到 <div>
中的代码。使用 $.get()
标记
<div id="widget"></div>
<script>
$( document ).ready(function() {
$.get( "widget.php?w=widget", function( data ) {
$( "widget" ).html( data );
});
});
</script>
我想做的是稍后调用通过 AJAX 调用加载的函数(在本例中为 widgetHide()
)。
示例:
$(document).ready(function() {
$('input:file').change(
widgetHide();
}
});
但是,无法调用该函数。我尝试以多种方式调用该函数(在 ajaxComplete
等),但没有一种有效。无论我尝试什么,创建的函数widgetHide()
无法调用。
我见过一些与此类似的问题,但是,没有一个问题的函数名称可以根据传递给调用的变量进行更改。尽管我认为函数名称可以更改的事实与我想要做的事情本质上无关。
是否有一个函数可以检查该函数是否存在?该函数是否超出范围?
最佳答案
编辑:刚刚意识到你的问题是隐藏函数位于 $(document).ready(function() 内部,这使得无法从外部调用。
无论如何,也请执行以下操作,这样更具可读性,并避免在内联困惑中混合 PHP 和 Javascript。
与其尝试将小部件的名称混合到 JavaScript 函数中,为什么不简单地将小部件 ID 作为参数传递:
<?PHP $widgetID=$_GET["w"]; ?>
<script type="text/javascript">
function Hide(widgetid) {
$("#" + widgetid + "Object").attr("display", "none");
}
</script>
然后这样调用它:
$(document).ready(function() {
$('input:file').change(
Hide('widget');
}
});
关于javascript - 使用 PHP 创建 JavaScript 函数,由 jQuery 返回,稍后从页面调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47128487/