2013-05-16 27 views
0

印刷在div I類具有使用smarty的引擎,在HTML頁印刷html元素,然後從jquery的印刷JQuery的不確定這是從AJAX

其從smarty的打印的HTML是

<div id="broadcastsXXX" class="broadcast orginal-broadcast highlightedbroadcast"> 
    <i class="dogears"></i> 
    <div class="content"> 
    ... 
    ... 
    </div> 
</div> 

和從jquery打印的html是從smarty模板打印的相同html代碼,如上所示。

我想刪除的CSS類「highlightedbroadcast」當有人在其上有類「內容」如上圖所示

,所以我做了jQuery代碼的DIV點擊:

$(document).ready(function() { 
    $('.content').click(function() {   
     $(this).parent().removeClass("highlightedbroadcast"); 
     var broadcastid = ($(this).parent().attr("id")); 
    }); 
}); 

功能正在改變點擊的div父母並刪除突出顯示的班級。

當用戶點擊了從Smarty的模板打印時頁面協議書的。內容的div其刪除highlightedbroadcast CSS類沒有任何問題。但是如果用戶點擊了從ajax打印的div.content,它將不會刪除該類,也不會執行任何操作。

我嘗試添加警報('嗨')的功能,它也說,當用戶點擊。內容div來自smarty並注意當用戶點擊div打印阿賈克斯。

注意,broadcastsXXX是動態的broadcasts123 broadcasts124 ..等

,這是一個真實的例子http://jsfiddle.net/samshannaq/FUK5Z/2/

那麼有沒有這方面的任何解決方案?

+0

小提琴或其他演示將是非常有益這裏瞭解這個問題。 – Duffmaster33

+0

這是 –

回答

1

.click()只會將事件處理程序添加到當前DOM。

如果你想jQuery的事件,也適用於通過AJAX隨後加載任何HTML,你需要使用.on() event handler而不是。點擊():

$(document).ready(function() { 
    $('body').on('click', '.content', function() {   
     $(this).parent().removeClass("highlightedbroadcast"); 
     var broadcastid = ($(this).parent().attr("id")); 
    }); 
}); 

要麼,你需要添加在每次AJAX調用後通過AJAX加載的HTML事件。

+1

你還在使用'。點擊一個真實的例子http://jsfiddle.net/samshannaq/FUK5Z/2/()'。我試圖爲你解決這個問題,但是隨後你在下次編輯時解開了它。 – Barmar

+0

公頃感謝,固定 –

+0

是固定的,http://jsfiddle.net/samshannaq/FUK5Z/4/感謝烏拉圭回合的幫助:) –

-1

我認爲你應該使用'活',而不是'綁定'或'點擊'。當文檔準備就緒時,div.content根本不會呈現(它們通過ajax響應呈現)。所以更改您的代碼到

$(document).ready(function() { 
    $('.content').live('click',function() {   
    $(this).parent().removeClass("highlightedbroadcast"); 
    var broadcastid = ($(this).parent().attr("id")); 
    }); 
}); 

可能工作。

+2

'.live()'被棄用的jQuery 1.7和1.9中刪除。你應該推薦'.on()'。 – Barmar