使用唯一编号自定义函数名称


Custom function name using unique number

我在一个页面上使用了许多HTML5音频播放器,我需要一种单独控制它们的方法。到目前为止,我一直在使用:

<?php $unique = uniqid(); ?>

以生成唯一的数字。我让他们能够成功地将此应用于我的玩家:

<button class="bb-play" onClick="play-<?php echo $unique; ?>()">Play</button>

我能够在一些jQuery中应用这一点,函数如下:

function play() { document.getElementById('player-<?php echo $unique; ?>').play(); }

我的问题是,我的唯一数字是说56f295fbe6be3如何使函数play()显示为play-56f295fbe 6be3()

我感谢你能提供的任何帮助。

试图编写名称中具有唯一数字的函数是一种糟糕的方法。您应该编写一个能够处理所有这些问题的唯一函数。

<script>
    function play(that) {
        var playerId = that.id;
        document.getElementById('player-' + playerId).play();
    }
</script>
<button class="bb-play" id="<?php echo $unique; ?>" onClick="play(this)">Play</button>

从语义的角度来看,我们为<button>元素分配了一个属性,该属性说明玩家id是什么,将其放入数据属性中更有意义。使用jQuery变得更容易:

<button class="bb-play" data-player-id="player-<?php echo $unique; ?>">Play</button>
<script>
    $("button.bb-play").click(function(){
        var playerId = $(this).data('playerId');
        $("#" + playerId).play();
    });
</script>

HTML:

<button class="bb-play" onClick="play(<?php echo $unique; ?>);">Play</button>

Javascript:

function play(id) { document.getElementById('player-'+id).play(); }

如果按钮和播放器位于同一父元素内,则可以在没有id的情况下工作。

<div class="player">
    <media .../>
    <button class="bb-play">Play</button>
</div>

和js代码

$('.bb-play').on('click', function() {
    $('media', $(this).closest('.player')).get(0).play();
});

为什么不将id号作为变量传递给函数?

function play_video(id) {
    document.getElementById('video-' + id).play();
}

并且在HTML中使用:

onClick="play_video(<?php echo $unique; ?>)" id="video-<?php echo $unique; ?>"
// onClick="play_video(56f295fbe6be3)" id="56f295fbe6be3"

然后,您可以对所有视频使用play_video()