2015-12-21 54 views
0

我需要从下面的剪辑WRPCTokenUrl CRM附件:获取WRPCTokenURL从使用jQuery

<span id="crmAttachment" 
    tabIndex="0" 
    class="attachment" 
    title="Click to open" 
    attachmentId="{868FCA8E-C992-E511-9419-0050569E70E2}" 
    attachmentType="5" 
    merchantId="{D6DF1974-4CD8-DE11-BCF5-00155D010600}" 
    userId="{9D98CF02-A484-E511-9418-0050569E70E2}" 
    url="/Activities/Attachment/download.aspx" 
    "WRPCTokenUrl="Data I want to get"" 
    HideOpenButton="0"> 

这是我迄今使用jQuery 1.9.1:

$.get(URL, function (data) {    
    var tempDom = $('<output>').append($.parseHTML(data)); 
    var WRPCTokenElement = $(tempDom).find("crmAttachment"); 
    if (WRPCTokenElement) { 
     var WRPCTokenUrl = WRPCTokenElement.attr("WRPCTokenUrl"); 
     if (WRPCTokenUrl) { 
      URL = WRPCTokenUrl; 
      window.open(URL); 
     }    
    } 
}, "html"); 

但问题似乎与“WRPCTokenURL”属性之前和之后的额外引号有关,因此我无法更改该属性。有任何想法吗?

回答

1

首先,HTML无效;该属性周围存在不匹配的双引号。还要注意发明自己的属性是无效的。如果你需要存储自定义数据与元素,使用data-*属性:

<span id="crmAttachment" 
    tabIndex="0" 
    class="attachment" 
    title="Click to open" 
    data-attachmentId="{868FCA8E-C992-E511-9419-0050569E70E2}" 
    data-attachmentType="5" 
    data-merchantId="{D6DF1974-4CD8-DE11-BCF5-00155D010600}" 
    data-userId="{9D98CF02-A484-E511-9418-0050569E70E2}" 
    data-url="/Activities/Attachment/download.aspx" 
    data-WRPCTokenUrl="Data I want to get" 
    data-HideOpenButton="0"> 

你的JS则只是有几个问题。该crmAttachment选择缺少#运营商,您应检查jQuery对象的length属性,看看是否有任何元素匹配的选择,您现在应该使用data()方法来得到你所需要的信息:

$.get(URL, function (data) {    
    var tempDom = $('<output>').append($.parseHTML(data)); 
    var wrpcTokenElement = $(tempDom).find("#crmAttachment"); 
    if (wrpcTokenElement.length) { 
     var wrpcTokenUrl = wrpcTokenElement.data("wrpctokenurl"); 
     if (wrpcTokenUrl) { 
      window.open(wrpcTokenUrl); 
     }    
    } 
}, "html"); 

Example fiddle

请注意,由于jQuery缓存对象的方式,给予data()的属性名称是小写字母。