如何避免使用此内联Javascript?

时间:2013-04-26 16:31:15

标签: javascript jquery wordpress inline-code reflow

我有一个wordpress网站。在single.php下,我有以下body标记

  <body <?php body_class(); ?>  onLoad="func(<?php echo $thePostID?>);" >

在网上阅读文章让我确信避免使用内联CSS和内联javascipt。所以我对我的网站进行了重组,以便样式和脚本现在包含在外部文件中。除了这行代码,因为它确实需要the post id,我不知道如何在single.php之外检索它。

您的平常帮助表示赞赏。

3 个答案:

答案 0 :(得分:5)

使用属性:

<body data-post-id="<?php echo $thePostID?>">

然后你可以写

var postId = document.body.getAttribute('data-post-id');

答案 1 :(得分:1)

只需在脚本或document.onload中调用它......

<script>
 $(document).ready(function(){
 (function(){
    <?php echo $thePostID?; ?>
 })();
 });

</script>

在脚本标记内编写javascript是完全可以接受的。即使它不在外部文件中,它也在你的html之外。

答案 2 :(得分:0)

我建议使用wp_localize_script

function theme_localize_post_id(){
   global $post;
    wp_register_script( 'your_script',... );
    wp_localize_script( 'your_script', 'the_name_for_your_js_object' , array( 'post_id'=>$post->ID ) );
}

add_action( 'wp', 'theme_localize_post_id' );

然后在你的脚本中简单使用。

$(document).ready(function(){
  functionName(post_id);
});