2013-08-26 53 views
0

哪裏這個出問題:jQuery的 - 處理空/未定義響應

$('#prod').on('click', '.doc', function() { 
var src = this.value; 
    if (! src) { 
     var url = this.id; 
      window.open('' + url + ''); 
    } else { 
     var encodedSrc = encodeURIComponent(src); 
     $('#inner').html('<iframe id = dFrame src = http://docs.google.com/viewer?url=' + encodedSrc + '&embedded=true></iframe>'); 

類.DOC是指在div「刺」幾個動態生成按鈕。它們都有一個id和一個值,用於將鏈接傳遞給click函數。該按鈕的值指的是一個文檔,該id爲一個URL。沒有任何按鈕在id和value中都有數據 - 目的是有時點擊按鈕會在按鈕id中指定的URL處打開一個新窗口;在其他時候,它會在iframe中打開Goog​​le Reader並顯示按鈕值中引用的文檔。上面的代碼是爲了:

獲得從點擊的按鈕值; 如果它爲空,則獲取該id並在id中的URL處打開一個新窗口; 如果它不爲空,則對按鈕值進行編碼並加載Google閱讀器。

我可以得到一個或其他工作,但不能同時使用。

+0

How do you say你不能同時工作?你可以給你一些你正在測試的按鈕的樣本 –

+0

上面的代碼,就像它一樣,按鈕id被檢索爲'id',所以,對於帶有id但沒有值的按鈕,第二個部分代碼仍然嘗試執行,並且出現錯誤。看來我無法獲得身份證和價值。這是創建按鈕的代碼(在'的append()'函數):'<按鈕類= DOC值= '+ DOC +' ID = '+鏈接+'>詳細' – sideroxylon

+0

你可以從HTML生成的源? –

回答

0

不是答案原來的問題,但達到相同的結果,如果有人有興趣解決方法。

$('#prod').on('click', '.doc', function() { 
    var src = this.value; 
    if (src.match('com$')) { 
     window.open('' + src + ''); 
} else { 
    var encodedSrc = encodeURIComponent(src); 
    $('#inner').html('<iframe id = dFrame src = http://docs.google.com/viewer?url=' + encodedSrc + '&embedded=true></iframe>'); 

如果按鈕值是一個文件,它通過按鈕點擊谷歌瀏覽器的iframe中被加載;如果它是一個url,它會被加載到一個新窗口中。