我将如何更改以下代码,以使只有黄色背景的单元格才可放置?

有没有一种简单的方法可以做到这一点,还是我必须重新编码整个jQuery?
谢谢。

小提琴:http://jsfiddle.net/bLb3H/38/

的HTML:

<table border="1" id="tbl">
 <tr>
  <td ></td>
  <td  bgcolor=#000000 ></td>
  <td class="items  p1 p3"><img src="http://icons.iconarchive.com/icons/deleket/soft- scraps/32/Button-Blank-Red-icon.png"/></td>
</tr>

<tr>
  <td bgcolor=#000000 ></td>
  <td class="items  p1"></td>
  <td class="items p3" bgcolor=#000000 ></td>
</tr>

<tr>
  <td class="piece" id="p1" ><img src="http://icons.iconarchive.com/icons/deleket/soft-scraps/32/Button-Blank-Gray-icon.png"></td>
  <td bgcolor=#000000 ></td>
  <td class="piece" id="p3" ><img src="http://icons.iconarchive.com/icons/deleket/soft-scraps/32/Button-Blank-Gray-icon.png" ></td>
</tr>




jQuery的

$('img').draggable({
});

$('#tbl td').droppable({
hoverClass: 'over',
drop: function(event, ui) {
    $(this).children('img').remove();
    var cell = ui.draggable.appendTo($(this)).css({
        'left': '0',
        'top': '0'
    });

  $('img').draggable('disable');

$("td").each(function() {
var id = $(this).attr("id");
    $("."+id).css("background", "");
  });

}
});

$(".piece").mouseover(function() {
id = $(this).attr('id');
$("."+id).css("background", "yellow");
}).mouseleave(function() {
id = $(this).attr('id');
$("."+id).css("background", "");
});

最佳答案

您有不同的方法来实现此目的:

精简版

//All elements with yellow background
$('#tbl td[style*=background-color:yellow]').droppable();


使用过滤器

$(function() {
    $('#tbl td').filter(function () {
        return $(this).css('background-color') == 'yellow';
    }).droppable();
});


使用查找:

jQuery('#tbl').find('td').each(function (){
    if($(this).css('background-color') == 'yellow'){
       // do something like $(this).droppable();
    }
});

关于javascript - 在彩色背景上滴,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13756254/

10-09 19:46