2011-12-09 49 views
2

列表框中的選定項目將顯示在下面的UL中。點擊UL中的一個項目,它將從列表框中刪除它,並從UL中刪除它。在jQuery中是否存在.removeProp()錯誤,或者我做錯了什麼?

重現錯誤:http://jsfiddle.net/rkw79/mmBKf/2/

  • 列表框中選擇一個項目
  • 點擊在UL該項目,它會消失,列表框將顯示它爲未選中
  • 點擊同一項目在列表框中

請注意,該事件被解僱,但該項目不加

現在做同樣的步驟,除了使用.prop( '選擇', ''),而不是.removeProp( '選擇'):你需要知道http://jsfiddle.net/rkw79/mmBKf/3/

+0

我猜'prop'是直接的對象屬性,不同的'attr',對元素屬性起作用。不是? –

回答

12

一切都是in the documentation

對於DOM元素或窗口對象的某些內置屬性,如果嘗試刪除屬性,瀏覽器可能會生成錯誤。 jQuery首先將未定義的值分配給屬性,並忽略瀏覽器生成的任何錯誤。通常,只需要移除已在對象上設置的自定義屬性,而不是內置(本機)屬性。

注意:請勿使用此方法刪除本機屬性,如選中,禁用或選中。這將完全刪除該屬性,一旦刪除,不能再添加到元素。改爲使用.prop()將這些屬性設置爲false

2

您應該使用removeAttr()

$('myele").attr('selected'); // <myele /> --> <myele selected />

$('myele").removeAttr('selected'); // <myele selected /> --> <myele />

+0

使用'removeAttr'破壞了我的整個代碼..是否有可能你不能做' removeAttr'當沒有屬性?像removeClass不在乎沒有類,他會忽略它。 – nclsvh

0

我想你混淆了DOM屬性的HTML屬性。我想不出爲什麼你想要刪除「選定」屬性。只要將它設置爲false:

$('ul').on('click', 'li', function() { 
    $('option[value="' + $(this).text() + '"]').get(0).selected = false; 
    $(this).remove(); 
}); 

編輯:Grr,我以爲那些jsfiddles只讀。 :-(

相關問題