1

これは、イメージと閉じるボタンを追加するために使用している関数です(イベントリスナーを使用)

function loadframe(img, imgid) {

    li = '';
    li += '<li><img src="' + img + '" width="100" height="120" /></li>';
    //li +='<a href="javascript:void(0)" onclick="removeajax(\''+img+'\','+imgid+')" >Close</a>';
    li += '<input type="button"  id="activate' + imgid + '" value="close">';

    document.getElementById('ulimage2').innerHTML += li;

}​              

いくつかの画像をクリックすると、閉じるボタンでプレビュー ペインに読み込まれます。

ここでこの関数を呼び出しています..という関数が含まれています

$('#activate' + imgid).click(function() {
    //alert(imgid)
    var yoda1 = stage.get("#" + imgid);
    layery.remove(yodaGroup1);
    layery.draw();
});​

ここに完全な機能があります..

function initStage1(images, imgid) {
    //    alert(imgid)
    var yodaGroup1 = "yodaGroup1" + imgid;
    yodaGroup1 = new Kinetic.Group({
        x: 100,
        y: 110,
        draggable: true,
        name: imgid
    });

    layery.add(yodaGroup1);
    stage.add(layery);
    var yoda1 = new Kinetic.Image({
        image: images.yoda1,
        x: 0,
        y: 0,
        width: 100,
        height: 120,
        id: imgid,
        name: "image",
        detectionType: "Pixel"
    });

    $('#activate' + imgid).click(function() {
        //alert(imgid)
        var yoda1 = stage.get("#" + imgid);
        layery.remove(yodaGroup1);
        layery.draw();
    });

    yodaGroup1.add(yoda1);
    yodaGroup1.on("dragstart", function() {

        yodaGroup1.moveToTop();
        layery.draw();
    });
    yodaGroup1.on("dblclick dbltap", function() {
        layery.remove(yodaGroup1);
        layery.draw();
    });
    yodaGroup1.on("dragend", function() {
        layery.draw();
        yoda1.saveImageData();
    });
    addAnchor(yodaGroup1, 0, 0, "topLeft");
    addAnchor(yodaGroup1, 100, 0, "topRight");
    addAnchor(yodaGroup1, 100, 120, "bottomRight");
    addAnchor(yodaGroup1, 0, 120, "bottomLeft");

    stage.draw();
    yoda1.saveImageData();
}​ 

このonclickは、最後にアップロードされた画像に対してのみ機能します..または、画像を1つだけ追加してから削除すると..正常に機能します..複数の画像を追加すると、最後にアップロードされた画像の閉じるボタンに対してのみ機能します. .. ここでは、HTML5 キャンバス機能のために kineticjs を使用しています。

4

2 に答える 2

0

レイヤー変数を削除すると、イベントとともにヨーダ変数も削除されるため、ヨーダ変数を関数の外に配置してみてください。

于 2012-08-17T16:09:14.467 に答える
0

おそらく、dom のレクリエーションで何かをしなければならないので、click()関数をon()次のように変更してみてください。

$('body').on('click','#activate' + imgid,function() {
    //alert(imgid)
    var yoda1 = stage.get("#" + imgid);
    layery.remove(yodaGroup1);
    layery.draw();
});
于 2012-08-17T17:03:37.580 に答える