JQuery обновление Div в Ajax Diesnt работает правильно, при использовании переменной - PullRequest
1 голос
/ 03 апреля 2010

я получил следующий код

var zieldiv = $(this).attr('id');
$.ajax({
  url: 'index.php?params',
  type: 'POST',
  data: { color:thenewcolor, zieldiv:zieldiv },
  timeout: 50000,
  beforeSend: function() {                                            
    $("#" + zieldiv).css({background: "#" + thenewcolor} );
  }
});

Я использую это для перетаскивания маленького div в больший div. переменная в начале выдаст строку "test1". Таким образом, в ajax должна быть обновлена ​​css для div, которая соответствует var zieldiv. Проблема в том, что, если бы я поместил строку вместо переменной var в $(...), как $("#test1"), он действовал бы так, как предполагалось, #test1 обновится. но если я использую var $("#" + zieldiv) родительский div, который окружает #test1-div, обновляется. но я точно знаю, что var zieldiv содержит строку «test1», потому что при передаче ее в php она содержит «test1». так что я думаю, что это немного странно. у тебя есть идеи?

спасибо, машек

Ответы [ 2 ]

0 голосов
/ 03 апреля 2010
    $(document).ready(function () {
$(\'#test1,#test2,#middle\').sortable();
$(\'#000,#ccc,#fff\').draggable({
helper: \'clone\',
});

$(\'#test1,#test2,#middle\').droppable({
accept: \'#000,#ccc,#fff\',   
hoverClass: \'txhover\',
drop: function(el, ui) {

if (ui.draggable.hasClass(\'txdropped\'))
return;
var drag = ui.draggable.clone();
drag.addClass(\'txdroppped\');
drag.id = \'cloneOf\' + ui.draggable.id;
$(this).append(drag);

var user = '.$user.'; 
var zieldiv = $(this).attr(\'id\');                                                                                                                                             
var thenewcolor = ui.draggable.attr(\'id\');
var backgroundcolor = this.style.backgroundColor;

$.ajax({
       url: \'index.php?eID=colors_ajax\',
       type: \'POST\',
       data: { color:thenewcolor, zieldiv:zieldiv, user2:user },
       timeout: 50000,
       beforeSend: function() {                                            
       $("#" + zieldiv).css({background: "#" + thenewcolor} );
       $("#tx-response").show();
       $("#tx-response").fadeOut(2000);
       }
});
}
});
});
0 голосов
/ 03 апреля 2010

Вы могли бы просто сделать это:

var zieldiv = this.id;

$("#" + zieldiv).css({background: "#" + thenewcolor} );
$.ajax({
     url: 'index.php?params',
     type: 'POST',
     data: { 'color':thenewcolor, 'zieldiv':zieldiv },
     timeout: 50000
});

Я предполагаю, что это упрощенный пример, убедитесь, что у вас есть переменная, определенная до вашего вызова ajax, чтобы она передавалась в замыкание, использование чего-то вроде this внутри обратного вызова не будет работать, потому что это знаю, о чем вы говорите, this находится в другом контексте, когда он возвращается.

...