2011-12-15 43 views
2

我正在爲遊戲創建通知系統,其工作原理與通知在手機中的工作方式類似。這些泛型類如何在不同的div之間有所區別?

這些通知都是最初創建的,隱藏的,後來遊戲應該「激活」某些遊戲內觸發器。

當我試圖保持通知的類別不同時,我遇到了問題。每個通知都以一個只有標題可見的小矩形框開始。點擊後,通知將展開並且說明變得可見。

現在,單擊通知可以擴展該通知並顯示其通知,但任何其他通知也會顯示其說明。

示例代碼:

var NotificationItems = new Array(); 

scope.registerNotification = function(title, description) 
{ 

    //add it to the array 
    NotificationItems.push(new scope.Application(title, description)); 

    var $NotificationContainer = $("#NotificationContainer"); 
    $NotificationContainer.append('<div class="Notification" title="'+title+'"></div>'); 
    var $thisNotification = $NotificationContainer.children('.Notification[title='+title+']'); 
    $thisNotification.append('<div class="NotificationTitle">'+title+'</div>'); 
    $thisNotification.append('<div class="NotificationDescription">'+description+'</div>'); 
    $(".NotificationDescription").hide(); 

    $thisNotification.click(function() 
    { 
     $(this).toggleClass('expanded'); 
     $('.NotificationDescription').slideToggle('slow'); 
    }); 
} 

我怎樣才能獲得.NotificationDescription被唯一識別的每個通知?

回答

2

你可以嘗試.children()方法:jQuery docs for children method

$thisNotification.click(function() 
{ 
    $(this).toggleClass('expanded').children('.NotificationDescription').slideToggle('slow'); 
}); 
+0

當您根據標題屬性加載單個通知對象時,實際上已經使用這種技術。我只是注意到了! – TLS

+0

它只是表明我有多少不知道自己在做什麼。非常感謝! – Briz

1

只要找到了點擊的元素是正確的:

$thisNotification.click(function() 
{ 
    $(this).toggleClass('expanded'); 
    $(this).find('.NotificationDescription').slideToggle('slow'); 
}); 

您可以鏈的電話,如果你喜歡:

$thisNotification.click(function() 
{ 
    $(this).toggleClass('expanded').find('.NotificationDescription').slideToggle('slow'); 
}); 
1

您可能想嘗試活動授權。

$('#NotificationContainer > div.Notification').live('click',function() 
{ 
$(this).toggleClass('expanded').find('div.NotificationDescription').slideToggle('slow'); 
}); 

這樣你只需要附加一次事件(在init上),並且一個事件處理所有的通知。

你還應該在一次添加所有的HTML:

通知的細微差別,我們正在建設中的jQuery的元素,而不是DOM,並追加一次全部。