0

参考:使用 jquery 加载 gravatar

我正在使用上述方法在页面上生成 gravatar,但是我在页面上有多封电子邮件,代码只生成一个 MD5,因此我的 JS 只有一个 gravatar:

var email = $('#email').val();
var digestString = Crypto.MD5(email);
$('#md5').val(digestString);
var gravatar = $('<img>').attr({src: 'http://www.gravatar.com/avatar/' + digestString});
$('.gravatar').append(gravatar);  

我正在使用 Crypto MD5 http://code.google.com/p/crypto-js/并且它加载在标题中,电子邮件保存在隐藏的输入中:

<input type="hidden" id="email" value="<?php echo $message['contact_email'];?>">

这些对于每个用户都可以打印出来。

任何帮助都会很棒

编辑 *****

HTML 输出工作:

<div class="message-author">
<span class="gravatar" style="height: 24px;">
      <img src="http://www.gravatar.com/avatar/82c9a9c254f35a912d8fefc248c30fd8"></span>
      <input type="hidden" id="md5" value="82c9a9c254f35a912d8fefc248c30fd8">
      <input type="hidden" class="email" value="themailname@thecompany.com">
</div>

HTML 输出不工作:

<div class="message-author">
<span class="gravatar" style="height: 24px;">
      <img src="http://www.gravatar.com/avatar/82c9a9c254f35a912d8fefc248c30fd8"></span>
      <input type="hidden" id="md5" value="">
      <input type="hidden" class="email" value="themailname@thecompany.com">
</div>

PHP

<?php foreach ($messages['page'] as $message): ?>
    <li class="message">
        <div class="message-body"><?php echo $message['message']; ?></div>
        <div class="message-author">
            <span class="gravatar" style="height: 24px;"></span>
            <input type="hidden" class="md5" value="">
            <input type="hidden" class="email" value="<?php echo $message['contact_email'];?>">
            <?php echo $message['contact_person'];?> - 
            <?php echo date("m M - g:i a", $message['created']); ?>
        </div>
    </li>
<?php endforeach; ?>
4

1 回答 1

1

尝试以下操作:

$('input.email').each(function () {
    var self = $(this);
    var md5 = Crypto.MD5(this.value);

    self.siblings('.md5').val(md5);
    self.siblings('.gravatar').append($('<img />').prop('src', 'http://www.gravatar.com/avatar/' + md5));
});

您需要引入一个循环(通过each())来单独查阅每个email元素;否则,正如您所意识到的,只有第一个被查看(因为getter只会val()返回第一个匹配元素的值。

但是,正如我在评论中暗示的那样,这确实应该是 PHP 的工作;在您的 HTML 中向用户发送电子邮件也是一个潜在的隐私问题。

于 2012-03-30T10:39:10.440 回答