我有一些使用MySQL数据库中的数据创建的图像。数据库中的数据是标题和描述。在用户单击图像之前,这在网站上不可见。 Javascript然后将其加载到其他地方,而不是我的图像附近。
我的问题是访问这些数据。我使用这种结构在PHP中创建我的元素:
<div class="image-container">
<img src="<?php echo $url; ?>" alt="<?php echo $title; ?>" />
<div class="title" style="display: none;"><?php echo $title; ?></div>
<div class="description" style="display: none;"><?php echo $description; ?></div>
</div>
单击图像时,我会调用以下数据:
$('.image-container').click(handle_image_click);
function handle_image_click(e) {
var title = jQuery(e.currentTarget).find('.title').html();
var description = jQuery(e.currentTarget).find('.description').html();
(...)
}
虽然这有效,但我认为这不是一个非常“干净”的解决方案。它要求我必须隐藏div元素并在其中“存储”数据。我知道你可以使用以下代码将数据存储到jQuery中的元素:
$('#myElement').data('someName', 'someValue');
现在我的问题是:有没有办法不必在php中创建div元素(如代码块1所示),但是直接将描述和标题添加到元素的'data'属性中,准备就绪被javascript / jQuery获取?
答案 0 :(得分:2)
您可以使用data-* html5 attribute存储数据
<div class="image-container" data-title="<?php echo $title; ?>" data-description="<?php echo $description; ?>">
<img src="<?php echo $url; ?>" alt="<?php echo $title; ?>" />
</div>
然后在处理程序
中$('.image-container').click(handle_image_click);
function handle_image_click(e) {
var title = jQuery(this).data('title');
var description = jQuery(this).data('description');
(...)
}
答案 1 :(得分:2)
是的,你可以..使用html5数据属性
<img src="<?php echo $url; ?>" data-title="<?php echo $title; ?>" data-description="<?php echo $description; ?>" alt="<?php echo $title; ?>" />
使用data()
...
function handle_image_click(e) {
var title = jQuery(e.currentTarget).find('img').data('title'); //gives title
var description= jQuery(e.currentTarget).find('img').data('description'); //gives description
....