Java-скрипт (JQuery) не работает после динамического изменения атрибута тега ASP.NET - PullRequest
0 голосов
/ 05 марта 2012

У меня проблема с запуском функции JS при изменении значения или атрибута rel тега anchor, anchor выглядит следующим образом:

<a id="ThemeImageLink1" runat="server" href="javascript:void(0)" class="preview"
rel="../Images/templateChooser/preview/preview1.jpg">

Я изменяю значение тега rel из codebehind:

HtmlAnchor imageLink = (HtmlAnchor)getControlId(counter, "ThemeImageLink");
imageLink.Attributes.Add("rel","../Images/templateChooser/preview/preview2.jpg");

getControlId использует FindControl() для извлечения элемента управления со страницы aspx.

Если я закомментирую часть кода, где я изменяю rel значение атрибута, jQuery работает нормально. Тогда скрипт jQuery использует значение по умолчанию rel

Вот часть jQuery, где я вызываю функцию:

    $(document).ready(function () {
         imagePreview();
    });

И реализация функций:

this.imagePreview = function(){ 

        xOffset = 10;
        yOffset = 30;

    $("a.preview").hover(function(e){
        this.t = this.title;
        this.title = "";    
        var c = (this.t != "") ? "<br/>" + this.t : "";
        $("body").append("<p id='preview'><img src='"+ this.rel +"' alt='Image preview' />"+ c +"</p>");                                 
        $("#preview")
            .css("top",(e.pageY - xOffset) + "px")
            .css("left",(e.pageX + yOffset) + "px")
            .fadeIn("fast");    
    },
    function(){
        this.title = this.t;    
        $("#preview").remove();
    }); 
    $("a.preview").mousemove(function(e){
        $("#preview")
            .css("top",(e.pageY - xOffset) + "px")
            .css("left",(e.pageX + yOffset) + "px");
    });         
};

У меня также есть другие функции JavaScript, которые работают нормально, но эта проблема вызывает у меня проблемы. Как вы думаете, мне следует вызывать JS для метода PageLoad?

1 Ответ

0 голосов
/ 05 марта 2012

Не знаю больше о asp.net, но если атрибут rel динамически добавляет, тогда вам нужно использовать live event.

нравится $("a.preview").live('hover' , function(e){

...