2013-08-26 36 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,它会被加载到一个新窗口中。