簡體   English   中英

具有.data和html5數據屬性的jQuery自定義函數

[英]jQuery custom functions with .data and html5 data atributes

單擊按鈕時,我試圖將新的“ app”追加到“ AppList”。

JS

$(".appCreate" ).click(newApp);

function newApp() {
    var facebookTemp = $("#facebook-template").html();

    var appName = $(this).data("appName");
    var appSize = $(this).data("appSize");
    var appTemp = $(this).data("appTemp");

    $("<div class=\"app" + appName + appSize + "\"></div>").html(appTemp).appendTo(".AppList");
};

HTML

<body>

    <section id="AppBox">
        <div class="AppList">

<!-- == Facebook == -->
            <div id="facebook-template">
                <div class="App facebook Size170x290">
                    <h1>Hello Test</h1>
                </div>
            </div>
        </div>
    </section>

<!-- == Settings == -->
    <section id="dialog-settings" class="dialog" title="Settings">
        <button data-appName="facebook" data-appSize="Size170x290" data-appTemp="facebookTemp" class="appCreate">
        Facebook</button>
    </section>
</body>

CSS

#facebook-template {
    display: none;
}
.facebook {
    background:linear-gradient(to bottom, #133783 0px, #102E6D 100%) repeat scroll 0 0 #133783;
}
.facebook { top:120px; left:0; }
#AppBox {
    position:fixed;
    top:0;
    bottom:0;
    left:0;
    right:0;
    margin:0;
}
.AppList {
    position:absolute;
    height:100%;
    width:100%;
    margin:0;
    padding:0;
}
.App {
    position:absolute;
    display:block;
    margin:5px;
    padding:0;
    box-shadow:0 0 5px 1px black;
    color:#FFFFFF;
    cursor:move;
}
.Size170x290 {height:170px;width:290px;}

基本上,這個東西沒有出現,我也不知道是什么原因造成的。

您丟失了點擊處理程序的上下文。

這是一個明顯的第一個錯誤:

$(".appCreate" ).click(newApp);

第二個錯誤是數據名稱。 改成:

var appName = $(this).data("appname");

注意這種情況。 將所有名稱轉換為小寫。

由於評論中的對話,我還添加了handlebars.js。

新的工作代碼:

$(".appCreate" ).click(newApp);

function newApp() {
    var facebookTemp = $("#facebook-template").html();

    var appName = $(this).data("appname");
    var appSize = $(this).data("appsize");
    var appTemp = $(this).data("apptemp");

    var template = Handlebars.compile(facebookTemp);
    var html = template({
        app : appName,
        facebook : appTemp,
        size : appSize
    });

    $(".AppList").append(html);
};

實時演示&&代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM