2010-10-22 14 views
6

Hey javascript için bir sorum var. Bir bağlantı etiketine veya asp: HyperLink öğesine bir href değeri atamam gerekiyor. ŞEYİN. Bu, bir iletişim kutusundaki metni, bir işlevin belirttiği bir href'e bağlamaya izin verecek. İşte benim kodum.Bir çapa etiketinin hrefini javascript ile değiştirin

<'custom:JQueryDialog I made' runat=server ID="dialogPopUp" AutoOpen="false" 
    CloseOnEscape="true" Modal="true" Title="Download" width="300px"> 
    //I will spare you all of the div tags for formatting 
    <a runat="server" id="downloadLink" target="_blank" class="'css with an icon'" 
     href=""></a> 
</'custom:JQueryDialog I made'> 

Şimdi, bilgi depolandığı yer olduğu için veritabanından bir fso almak zorundayım. Bu fso, varlık reflektör sınıfının bu javascript'e gönderdiği şeye bağlı olarak farklıdır. Ben bulduğum C# benzer javascript dizeleri biçimlendiren bir işlevi var. Daha sonra fsoyu varlık yansıtıcı sınıfından alan başka bir işleve sahibim. Bu çalışıyor. Dizeyi bir uyarıyla görüntüleyerek test ettim ve bu iyi çalışıyor. Sahip olduğum sorun, bağlantı etiketinin href'inin javascript ile ayarlanmasıdır. Ben deliriyorum! Lütfen yardım et!

Dize Biçimi:

function changeHref(fso) { 
    var downloadHref = String.format("Download.ashx?fso={0}", fso); 
    $('#<%= this.downloadLink.ClientID %>').href = downloadHref; 
    showDialog(<%= this.'custom dialog i made'.ClientID %>); 
} 
indirme bağlantısı değiştirilir

ve her şey: href değiştirmek için

String.format = function() { 
    var s = arguments[0]; 
    for (var i = 0; i < arguments.length - 1; i++) { 
     var reg = new RegExp("\\{" + i + "\\}", "gm"); 
     s = s.replace(reg, arguments[i + 1]); 
    } 
} 

girişimim. Bunu yapabilmek mümkün görünmüyor! Sayfa yükünün sırasını kaçırıyor muyum? Öğeler henüz oluşturulmayabileceğinden tüm sayfa yüklendikten sonra bunu yapmam gerekir mi? Birkaç farklı şey denedim. Gerçekten bir yön kullanabilirim.

cevap

5

Doğrudan bir jQuery nesnesinden href başvuruda bulunamazsınız. Tek yaptığın yeni bir özellik yaratmak.

Bütünlüğü için
$('#<%= this.downloadLink.ClientID %>').attr("href", downloadHref); 

, belirtmek gerekir ... Böyle attr aracılığıyla niteliğini belirlemek için Değiştir o size can dizi sözdizimi kullanılarak altta yatan DOM öğesine almak ve sonra birlikte href ayarlayabilirsiniz düzenli JavaScript ...

var domElem = $('#<%= this.downloadLink.ClientID %>')[0]; // DOM element is at 0 
domElem.href = downloadHref; 

Ayrıca, başka muhtemel hata, ben ... burada tırnak gerek

showDialog("<%= this.'custom dialog i made'.ClientID %>"); 
+0

. Bu .attr işlevine sahip değil mi? bu sözdizimi ile çalışmıyor. – Tom

+0

Bunu çözdüm. Bu .attr ('href', downloadHref); – Tom

0

Bu satır yanlış, HREF değerini ayarlamak için jQuery öğesinin attr işlevine erişmeniz gerekir.

$('#<%= this.downloadLink.ClientID %>').attr("href", downloadHref); 
0

Javascript'inizin sayfa yükleme işlemi tamamlandıktan sonra çalışması gerekir.

bunu yapmanın jQuery yolu: Ben normal javascript fonksiyonu ile yapıyorum

$(document).ready(function() { init() }) 


function init() { 
    $('#<%= this.downloadLink.ClientID %>').attr("href", downloadHref); 
    //Josh's code above 

} 
İlgili konular