0

次のコードにifステートメントを入れようとしています。しかし、私はJQueryが初めてなので、そこに置く方法がわかりません。行のコメントを外すと、FireBug で「missing : after property id」エラーが発生します。どうすればこれを達成できますか?前もって感謝します。

$( ".droppable" ).droppable({
  //if ((this.firstChild) != "[object HTMLImageElement]") {
    drop: function( event, ui ) {
      var dropped = ui.draggable;
      var droppedOn = $(this);
      $(dropped).detach().css({top: 0,left: 0}).appendTo(droppedOn);
    }
  //}
});
4

1 に答える 1

0

オブジェクト リテラルにコードを含めることはできません。

最初にオブジェクトを作成してから、必要に応じてプロパティを追加します。

var o = {};
if ((this.firstChild) != "[object HTMLImageElement]") {
  o.drop = function( event, ui ) {
    var dropped = ui.draggable;
    var droppedOn = $(this);
    $(dropped).detach().css({top: 0,left: 0}).appendTo(droppedOn);
  };
}
$( ".droppable" ).droppable(o);

編集:

this関数内から使用する必要がある場合は、アプローチ全体が間違っています。オブジェクトには常にプロパティが必要であり、代わりに関数内でチェックを行う必要があります。

$( ".droppable" ).droppable({
  drop: function( event, ui ) {
    if ((this.firstChild) != "[object HTMLImageElement]") {
      var dropped = ui.draggable;
      var droppedOn = $(this);
      $(dropped).detach().css({top: 0,left: 0}).appendTo(droppedOn);
    }
  }
});
于 2012-05-21T11:26:10.143 に答える