使用jQuery从其他类中获取元素(Prettyphoto)

时间:2012-09-03 12:32:35

标签: php jquery wordpress prettyphoto

我使用jQuery和prettyPhoto(wordpress插件)时遇到问题!我的问题是,我希望从已经工作的标签之外的隐藏div中获取图像描述。这就是我到目前为止所做的:

<div class="portfolie_short_content_containe">                  
    <a class="lightbox" style="text-decoration: none;" rel="lightbox" href="<?php echo $image[0]; ?>" title="<?php echo $image_desc; ?>">
        <span class="hover">
            <div class="portfolio_thump_hover_text">
                <span class="lable"><?php echo $short_descr;?></span><br>
                <span class="lable"><?php echo $link;?></span><br>
                <span class="lable"><FONT style="color : #f47b42;">Se CV</FONT></span>
            </div>
        </span>
        <img src="<?php echo $image[0]; ?>" width="<?php echo $image[1]; ?>" alt="<?php echo $image_alt; ?>"></img>
    </a>

    <!-- hidden div containing description -->
    <div id="lightbox" style="display: none"><p><?php echo $full_descr; ?></p><div>
</div>

jQuery.prettyphoto.js文件看起来像这样!

theRel = $(this).attr('rel');
galleryRegExp = /\[(?:.*)\]/;
isSet = (galleryRegExp.exec(theRel)) ? true : false;
var x = 500;
var elmtid = $(this).attr('class');

// Put the SRCs, TITLEs, ALTs into an array.
pp_images = (isSet) ? jQuery.map(matchedObjects, function(n, i) {
    if ($(n).attr('rel').indexOf(theRel) != -1) 
        return $(n).attr('href'); 
}) : $.makeArray($(this).attr('href'));

pp_titles = (isSet) ? jQuery.map(matchedObjects, function(n, i) { 
    if ($(n).attr('rel').indexOf(theRel) != -1) 
        return ($(n).find('img').attr('alt')) ? $(n).find('img').attr('alt') : "";
}) : $.makeArray($(this).find('img').attr('alt'));

//Get text from hidden dir!     
pp_descriptions = (isSet) ? jQuery.map(matchedObjects, function(n, i) {
    if ($(n).attr('rel').indexOf(theRel) != -1) 
        return ($(n).find('p').text()) ? $(n).find('p').text() : ""; 
}) : $.makeArray($(this).find('p').text());

我不是那种经验丰富的jQuery。任何人都可以帮忙搞定描述吗?我尝试过这样的事情!

pp_descriptions = (isSet) ? jQuery.map(matchedObjects, function(n, i) {
    if($(n).attr('class') != -1) 
        return ($('#'+elmtid).html()) ? $('#'+elmtid).html()  : \"\"; 
}) : $.makeArray($('#'+elmtid).html());

但它不起作用。

1 个答案:

答案 0 :(得分:0)

解决了它,也许很容易,但第一次使用jQuery!

<script type="text/javascript">
var $j = jQuery.noConflict();
$j(document).ready(function(){

//reference the class instead of a tag
$j("div[class^='portfolie_short_content_containe']").prettyPhoto({theme: '<?php echo $portfolio_options["prtfl_prettyPhoto_style"]; ?>'});
});
</script>

在js文件中我改变了这个。

theRel = $(this).find('a').attr('rel');
//theRel = $(this).attr('rel');
galleryRegExp = /\[(?:.*)\]/;
isSet = (galleryRegExp.exec(theRel)) ? true : false;
var x=500;

pp_images = $.makeArray($(this).find('a').attr('href'));
pp_titles = $.makeArray($(this).find('img').attr('alt'));
pp_descriptions =  $.makeArray($(this).find('p').html());

这并不完美,但它的作用是希望它可以帮助其他人解决同样的问题。