2013-07-16 131 views
0

我已經在我的網頁下面的標籤點擊功能不能正常工作已經使用jQuery

時間軸 追加到身體,並用folling jQuery代碼

$(".timeline").click(function(){createtip(eventdata);}); 

function createtip(eventdata){ 

    $('<div class="tip"></div>').appendTo('body').html(html_content); 
     positionTooltip(eventdata);   
    }; 

    function positiontip(eventdata){ 
     var PosX = eventdata.pageX; 
     var PosY = eventdata.pageY; 
     $('div.tip').css({'position': 'absolute', 'top': PosY, 'left': PosX}); 

和html_content元素是:

<input type="button" class="button" name="submit_tooltip_form" value="close"/> 

追加div標籤後,我試圖關閉這個div標籤,通過點擊div標籤內的按鈕。我不知道該怎麼做,因爲我是n新的jquery。

回答

0

fiddle

當你添加新的內容對於文檔,它將被添加,而不需要任何事件處理程序,如click()on('click')。這意味着你必須做兩件事情之一:

要麼已被添加後,他們的活動到新的對象綁定,這樣的:

$(newElement).on('click', function() { 
    $(this).closest('.tip').hide(); 
    // other stuff 
}); 

或相反,你可以委託點擊處理,以父對象,它會自動處理新添加元素的事件,就像這樣:

$('body').on('click', '.button', function() { 
    $(this).closest('.tip').hide(); 
}); 

如果使用第二種方法,你不必擔心事件綁定到新的對象。

注意:您可能想刪除提示而不是隱藏它們?在上述示例中.hide()代替.remove()

+0

我已經試過這個但不工作。我想關閉追加的div標籤點擊裏面的附加div標籤 –

+0

第二個功能應該對添加的元素工作。我已將其更改爲反映您的評論。注意:這個函數應該調用一次,並且應該處理所有添加的按鈕。 –

+0

嘗試[小提琴](http://jsfiddle.net/yN2Qn/) –

0

試試這個,

function createtip(eventdata){ 
     $('body').append('<div class="tip">'+html_content+'</div>'); 
     positionTooltip(eventdata);   
    }; 
+0

您正在將已附加的每個元素上的事件相乘 - 而不是最佳選項。 –

+0

我已經附加了這個。現在我想刪除使用附加的div標籤內的按鈕 –

+0

我有以下關閉附加div類$(「。按鈕」)。click(function(eventdata){$(「。提示「)。hide();}) –

0

嘗試使用jquery .on()

$(".timeline").on('click',function(){ 
    createtip(eventdata); 
}); 
0

試試這個,

$('input [name="submit_tooltip_form"]').live("click", function(){ 
    $(".tip").hide(); 
});