将字符串传递给jquery函数

时间:2013-04-20 22:44:39

标签: javascript

<script>

   $(document).ready(function() {   
   $(".tweets").liveTweets({operator: "#google"});
            });
</script>

我想将#google作为变量,以便我可以根据需要更改自动收报机代码。我试着用php回声。但是,它打破了现场推文jquery。

谢谢!

2 个答案:

答案 0 :(得分:1)

<?php
  $operator = "#google";
?>

<script>

   $(document).ready(function() {   
   $(".tweets").liveTweets({operator: <?php echo json_encode($operator)?>});
            });
</script>

编辑:感谢您的comment @icktoofay。

他是对的,我们不需要用双引号包装输出,它就是为我们做的。我刚刚更新了它。

答案 1 :(得分:0)

HTML属于.html个文件,CSS属于.css个文件,JS属于.js个文件。如果要将其他数据从服务器(在本例中为PHP)传递给JavaScript,则应使用[data-*] attributes

无论您在何处定义.tweets元素,都应将您想要用于operator的值作为自定义data-*属性传递:

<子> HTML:
<?php
    $operator = '#google';
?>
<div class="tweets" data-operator="<?php echo htmlspecialchars($operator) ?>">
    ...contents...
</div>

在单独的JS文件中,您可以在初始化窗口小部件时使用自定义服务器变量:

<子> JS:
$('.tweets').each(function () {
    $(this).liveTweets({
        operator: $(this).data('operator')
    });
});

或者,您可以使用data-*属性来包含整个JSON对象以初始化窗口小部件:

<子> HTML:
<?php
    $liveTweets = array(
        'operator' => '#google'
    );
?>
<div class="tweets" data-live-tweets="<?php echo htmlspecialchars(json_encode($liveTweets)) ?>">
    ...contents...
</div>
<子> JS:
$('.tweets').each(function () {
    $(this).liveTweets($(this).data('liveTweets'));
});

此外,您可以根据具有相应data-*属性的条件选择元素:

<子> JS:
$('[data-live-tweets]').each(function () {
    $(this).liveTweets($(this).data('liveTweets'));
});