2012-04-23 64 views
0

我有一組被點擊時,他們是加載個人.PHP頁面jQuery UI的AJAX標籤。我的所有樣式等都表達了這一點,因爲包含標籤小部件的頁面提供了已鏈接的CSS和腳本。但是,當點擊選項卡時加載的實際頁面時,我看不到讓preventDefault()在這些新創建的DOM元素上使用.on()。我使用jQuery燒烤用我的標籤,所以我不能有jQuery的AJAX標籤使用的preventDefault()與()

「#」 S被添加到URL。這是在點擊標籤面板中的鏈接時引起的。 我已經能夠成功地在最初加載的DOM元素上使用preventDefault(),但不能通過AJAX將其提取到標籤小部件中。

我對內容toggler功...

$(function(){ 
$(".showMoreOrLess").on('click', (function() { 
if (this.className.indexOf('clicked') != -1) { 
    $(this).removeClass('clicked'); 
    $(this).prev().slideUp(500); 
    $(this).html("Read More" + "<span class='moreUiIcon'></span>"); 
    } 
    else { 
    $(this).addClass('clicked'); 
    $(this).prev().slideDown(500); 
    $(this).html("See Less" + "<span class='lessUiIcon'></span>"); 
    }  
})); 
}); 

我想給的preventDefault()這個函數結合進去。

// prevents default link behavior on BBQ history stated tab panels with "showMoreOrLess" links 
$(".showMoreOrLess").click(function (event) 
{ 
event.preventDefault(); 
//here you can also do all sort of things 
}); 
// /prevents default behavior on "showMoreOrLess" links 

我使用。對(「點擊」,功能(工作)),等等我用。對()在一個單獨的功能,嘗試了幾種方式,並試圖將其在第一組合功能如上。有誰知道我做錯了什麼?該代碼適用於靜態的標籤內容,而不是通過AJAX加載的內容。任何幫助將不勝感激。似乎無法弄清楚這一點。提前致謝。

回答

0
$("body").on('click', ".showMoreOrLess", function(event) { 
    event.preventDefault(); 
    var self = $(this); 
    if (self.hasClass('clicked')) { 
    self.html("Read More" + "<span class='moreUiIcon'></span>").removeClass('clicked').prev().slideUp(500); 
    }else { 
    self.html("See Less" + "<span class='lessUiIcon'></span>").addClass('clicked').prev().slideDown(500); 
    } 
}); 
+1

文物!非常感謝!您不僅可以使用.on()方法解決preventDefault問題,而且還可以使用更少的內聯函數$(this)優雅地整合函數中的代碼。我非常感謝您的幫助和時間。起初代碼不起作用,因爲我認爲我有原始函數的殘餘,但是單獨使用你自己的工作對靜態和AJAX加載的UI標籤面板內容。你搖滾! – 2012-04-25 17:36:04

+0

我很高興能有這樣的幫助! '-Cheers' – Relic 2012-04-25 22:51:42

1

部分$(".showMoreOrLess").click只適用於您的網頁上已經accessable鏈接

嘗試使用事件代理(這裏的點擊次數的每次現有元素上捕獲的,你只要把它傳遞是留意選擇...作爲一個好的副作用保存聽衆

$(document).on("click", ".showMoreOrLess", function(event) { 
    event.preventDefault(); 
    //here you can also do all sort of things 
}); 

而非文檔使用某個ID從$("#myContainerId")頁(編輯:當然你點擊需要的元素是元素的內部與ID)

+0

非常感謝。這在使用「body」作爲選擇器時有效。我已經選擇使用下面的Relic的建議,因爲我已經使用了$(this)的更少的用途來合併函數。我試圖將你的標記作爲答案,但我想SO只允許每個線程爲我。我感謝你的時間。 – 2012-04-25 17:33:43

+0

這不是要獲得聲望,而是互相幫助:) – 2012-04-25 17:48:20

+0

你打賭!感謝您的理解。 – 2012-04-25 19:17:27