我在尝试从编辑Wordpress页面时使用的排队javascript文件调用Javascript函数时遇到问题。我创建了一个简单的元框,其中包含一些AJAX超链接,我希望能够从Javascript文件中调用函数(非常简单的东西,但我不断收到错误“blah(1)未定义”。
METABOX中包含的HTML:
<a href="#" class="delete_pimg" id="pimg_1" onclick="blah(1);return false;">Delete Item</a>
JS:
function blah(theid){
if ( confirm("Are you sure you wish to remove this image (Note: Images are not removed from the Media Library)?") ) {
var data = {
action: 'myajax-delete',
imgid: theid
};
jQuery.post(ajaxurl, data, function(response) {
//Parse the JSON Object
var object = jQuery.parseJSON(response);
if ( response.status == 'true' )
{
jQuery('#file_' + theid + '_row').remove(); //remove TR
alert('Image removed from this portfolio');
}else{
alert('Sorry, that image could not removed right now, please reload the page and try again.');
}
});
注意:PHP服务器端代码工作正常,并且按照我的手册帖子的预期完全响应。 javascript文件肯定存在并由浏览器按预期下载。
如果我使用下面的代码行,AJAX可以工作(所以我知道JS没问题)但是我需要能够通过名称调用函数而不是使用选择器。我非常想知道为什么我不能称之为简单的功能!!!!
jQuery('.delete_pimg').click(function() { ^Above code^ }
只需重新点击点击链接时出现的错误:'blah(1)未定义'
我希望我已经清楚地解释了这一点 - 如果没有,请给我一个大喊:)
答案 0 :(得分:0)
好的基本上 - 我无法让它发挥作用。我的javascript绝对没问题,所以为了调用我自己的函数,我在页面本身中声明它们而不是调用JS文件。这似乎有效,我的代码立即执行,没有任何错误。
即
<script type="text/javascript">function blah(id){alert("This Works Nicely!");}</script>
解决方法,但至少解决了我的问题。
从前额擦汗
答案 1 :(得分:0)
我遇到同样的问题blah() is not defined
,发现我需要让排队的js文件定义函数,而不是用jQuery(document).ready(function($) { function blah(param){[...]} })
包裹。
这是我的代码现在的样子,让一切对我有用:
(我文件中的简短片段)
function blah_init() {
# Want this on all pages
# Queue JS and CSS
wp_enqueue_script(
'blah-file', // handle
get_template_directory_uri() . '/assets/js/blah-file.js', // source
array('jquery'), // registered script handles this script depends on
'1.0', // version
true // true = in footer, false (or blank) = in <head>
);
}
add_action('wp_enqueue_scripts', 'blah_init');
(这是文件的全部内容)
//jQuery(document).ready(function($) {
function blah(param) {
console.log('Blah triggered: ', param);
}
//})
(我输出一些链接的简短片段,例如社交链接)
<!-- Ignore the href, this has nothing to do with getting this to work -->
<a href="javascript:;" onclick="blah("facebook")">Facebook</a>