2013-06-04 69 views
0

對不起,我認爲這是直截了當的,但我只是沒有得到結果,一直在努力/尋找年齡!設置一個默認的字符串值

我正在尋找一個默認標題(即「沒有標題數據」)在幻燈片時沒有標題/標題存在的圖片。我怎樣才能做到這一點?腳本在下面,謝謝你的採訪,並且很抱歉作爲新手。

(這與PWI(Picasa網絡集成商)合作,jQuery的1.8.3和2.1.4的fancybox

測試頁也是在http://www.talesfromthesaddle.com/photosTEST/photos.shtml

// This function is called by FancyBox to format the title of a picture 
function formatPhotoTitleFancyBox() { 
    var $title = this.element.title; 
     this.title = $title; 

    return; 
    if (this.element.parentNode.childNodes && (this.element.parentNode.childNodes.length > 1)) { 
     var $caption = $(".captiontext", this.element.parentNode); 

     if ($caption.length > 0) { 
      $title = $caption[0].innerHTML; 
     } 
     var $links = $(".downloadlink", this.element.parentNode); 
     if ($links.length > 0) { 
      var downloadLink = '<a style="color: #FFF;" href="' + $links[0].href + '">Download</a>'; 
      $title = $title + '&nbsp;&nbsp;' + downloadLink; 
     } 
    } 



title = $title; 


} 
+4

Java **不是** JavaScript。 –

+0

謝謝Luiggi,對於錯誤感到抱歉。 –

+1

至少你作爲程序員學到了一些新的東西。 –

回答

0

你的意思是這樣的:

if ($caption.length > 0) { 
    $title = $caption[0].innerHTML; 
} 

變化

$title = ($caption.length) ? $caption[0].innerHTML : "There is no caption data"; 
+0

嗨Sudhir,就像我在上面的評論中所說的那樣,我真的很感謝幫助。我試過這個答案,也是上面的那個,但由於某種原因,空字段仍然沒有填充,即沒有默認消息。我會更多地考慮它,也許與fancybox腳本有某種衝突......我不知道。我會繼續努力,再次感謝! Nick –

0

完全擁抱jquery - 現在你正在做一半。這裏是我已經重寫你的函數

// This function is called by FancyBox to format the title of a picture 
function formatPhotoTitleFancyBox() 
{ 
    var $elem = $(this.element); 
    var title = $elem.attr('title') || 'No Caption'; // use || operator to set a default 

    var caption = $elem.parent().find(".captiontext").html(); 
    title = caption || title; // if no html() found or no element found, default back to title 

    var $links = $elem.parent().find(".downloadlink").first(); 
    if ($links.length > 0) 
    { 
     var downloadLink = '<a style="color: #FFF;" href="' + $links.attr('href') + '">Download</a>'; 
     title = title + '&nbsp;&nbsp;' + downloadLink; 
    } 

    // finally, after ALL the edits to title, set this.title. setting it above like in the OP question means all future changes are missed out on. 

    this.title = title; 

} 

編輯:鑑於在OP的意見更新,建議我可能會是:而不是使用函數來設置this.title,而不是確保所有元素都有更新的title屬性之前你初始化你的fancybox。沿着線的東西:

$('.the-same-selector-for-fancybox').each(function() 
{ 
    var $elem = $(this); 
    var title = $elem.attr('title') || 'No Caption'; // use || operator to set a default 

    var caption = $elem.parent().find(".captiontext").html(); 
    title = caption || title; // if no html() found or no element found, default back to title 

    var $links = $elem.parent().find(".downloadlink").first(); 
    if ($links.length > 0) 
    { 
     var downloadLink = '<a style="color: #FFF;" href="' + $links.attr('href') + '">Download</a>'; 
     title = title + '&nbsp;&nbsp;' + downloadLink; 
    } 

    // finally, after ALL the edits to title, set this.title. setting it above like in the OP question means all future changes are missed out on. 

    $(this).attr('title', title); 
}); 

// call fancybox init here 

通過做這樣的,你是確保每個元素都有通過的fancybox初始化時的標題。

+0

非常感謝您的關注。我試過了你的腳本,但由於某種原因,它似乎不起作用。我曾嘗試使用默認的||命令我自己,但空的領域仍然是空的。現有字幕繼續顯示,但默認不存在。 目前至少這個腳本在測試頁面上,可以在http://www.talesfromthesaddle.com/photosTEST/photos上看到。shtml(該專輯「祕魯第2部分,安第斯山脈」充滿了未加標題的圖像) 也許這個腳本和fancybox之間有一些衝突?我會繼續努力,再次感謝你花時間幫助你。 –

+0

你的測試用例不是很有幫助。我沒有看到我的測試方法在任何地方(我看到一個與'formatPhotoTitleColorBox'不同名稱的非常​​不同的版本)。當我在那裏設置斷點時,函數實際上並未被調用。當我不知道要尋找什麼時,很難調試。 –

+0

對不起,Eli,我正在嘗試(至少)很多事情,也許我應該設置兩個測試頁面。我會現在恢復它,進一步道歉... 但是,你應該看到我上面的評論(即低於我的問題/ OP)。 –

0

對,向所有人表示歉意......繼續查看我發現的PWI腳本,並在底部附近可以看到附加一點,這似乎工作....並且似乎下腳本完全是多餘的?

function photo(j, hidden, username) { 
      var $html, $d = "", $c = "", $youtubeId = "", $caption; 
      if (j.summary) { 
       var $matched = j.summary.$t.match(/\[youtube\s*:\s*(.*)\s*\](.*)/); 
       if ($matched) { // Found youtube video entry 
        $youtubeId = $matched[1]; 
        $c = $matched[2].replace(/[\r\n\t\s]+/g, ' '); 
        $caption = $matched[2].replace(/[\n]/g, '<br/>'); 
       } else { 
        $c = j.summary.$t.replace(/[\r\n\t\s]+/g, ' '); 
        $caption = j.summary.$t.replace(/[\n]/g, '<br/>'); 
       } 
      } 
      if (settings.showPhotoFilename) { 
       if ($caption.length > 0) { 
        $caption += ", "; 
       } 
       $caption += settings.labels.fileName + " " + j.media$group.media$title.$t; 
      } 
      if (settings.showPhotoDate) { 
       if ((j.exif$tags) && (j.exif$tags.exif$time)) { 
        $d = formatDateTime(j.exif$tags.exif$time.$t) + " "; 
       } 
      } 
      var $pretitle = $c.replace(new RegExp("'", "g"), "&#39;"); 
      $title= $pretitle||'There is no caption'; //My appended line 
      $d += $title;