ui.item.has()总是被触发

时间:2013-06-02 14:16:18

标签: jquery jquery-ui

我遇到jQuery-UI和ui.item对象的问题。我一直在trying找出ui.item是否包含某个类的元素,但似乎我使用了错误的方法。

代码:

$('.contain').sortable({
     start: function(e,ui) {
          if(ui.item.has('.nipple'))
              ui.item.css('background','red');
     }
}).disableSelection();

你可以向我解释一下,为什么我错了?

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

尝试使用.find()

$('.contain').sortable({
    start: function(e,ui) {
        ui.item.find('.nipple').css('background','red');
    }
}).disableSelection();

这是一个有效的演示:http://jsfiddle.net/GGuqT/2/

它只是尝试在当前nipple内找到ui.item类的元素。如果找到它,则应用样式。

我更喜欢这种方法,因为它只是一行,无需检查.nipple是否存在。

答案 1 :(得分:0)

来自jQuery .has

  

描述:将匹配元素集减少到具有的匹配元素集   与选择器或DOM元素匹配的后代。

所以我认为您需要检查返回对象的length

if(ui.item.has('.nipple').length > 0){
      //your code here
}