基本上我试图调用一个动态创建的函数(其名称可能根据$.get
调用而改变)
我有一个生成JavaScript函数的PHP文件:
widget.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()
都无法调用。
我已经看到了一些类似的问题,但是,根据传递给调用的变量,没有能够改变的函数名称。虽然我认为函数名称可以改变的事实与我想要做的事情基本无关。
是否有检查功能是否存在的功能?功能是否超出范围?
答案 0 :(得分:2)
编辑:刚刚意识到你的问题是隐藏功能在$(文件).ready(function()内部,无法从外部调用。
无论如何,请执行以下操作,它更具可读性,并避免在内联混乱中混用PHP和Javascript。
为什么不简单地将小部件ID作为参数传递,而不是试图将小部件的名称混合到javascript函数中:
<?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');
}
});