2012-08-14 85 views
9

任何人都可以告訴我爲什麼它可以在舊版本的jQuery(例如1.4.2)中工作,但如果切換到更高版本,例如(1.6 +)它停止工作?通過文本查找選擇選項

http://jsfiddle.net/nmvf6/1194/

$(function(){ 
    $('#my_button').click(function(){ 
     var unitName = "Unit2"; 
     $('.assUnit').find('option[text="'+unitName+'"]').remove(); 
    }); 

}); 

我已經檢查的控制檯,更高版本的錯誤輸出和錯誤似乎在頁面加載發生之前,我甚至得到儘可能因爲它加載我的腳本,並能夠點擊按鈕..

當我改變版本爲1.8.0例如,運行該頁面,this error出現在我的Opera腳本控制檯:

http://s15.postimage.org/5yhodvirt/ess.png

這似乎是一個 「mootools的」 file..but我沒有選擇的mootools,我選擇的jQuery 1.8.0

:/

感謝。

+5

哈哈,你說'屁股'。 – RubeOnRails 2015-02-19 21:04:42

回答

13

您正在使用Attribute Equals選擇部,具有指定的屬性與價值恰好等於某個值的元素,選項元素沒有text屬性,可以用:contains選擇器代替,試試這個:

選擇包含指定文本的所有元素。

$(function(){ 
    $('#my_button').click(function(){ 
     var unitName = "Unit2"; 
     $('.assUnit').find('option:contains('+unitName+')').remove(); 
    }); 
}); 

FIDDLE

如果要選取只有某些價值元素,你可以使用filter方法:

$(function(){ 
    $('#my_button').click(function(){ 
     var unitName = "Unit2"; 
     $('.assUnit option').filter(function() { 
      return $(this).text() === unitName 
     }).remove(); 
    }); 
}); 

FIDDLE

+0

嗨,看到我對另一個誰建議包含的評論 – 2012-08-14 10:45:21

+0

嗯,只是試過,但似乎也沒有工作。雖然沒有得到任何控制檯錯誤。編輯:現在得到它的工作,不得不改變「輸入」到「選項」謝謝。 – 2012-08-14 10:54:44

+0

@ user1597762是的,歡迎您。 – undefined 2012-08-14 10:57:20

2

你將可能有更多的運氣與此:

$('.assUnit').find('option:contains('+unitName+')').remove(); 

參見::contains() selector

+0

嗨,包含對此沒有任何好處,因爲它必須完全匹配。包含('unit2')例如也會匹配'unit200',並且會有很多選擇菜單和選項。 – 2012-08-14 10:44:49

0

試試這個

$(function(){ 
    $('#my_button').click(function(){ 
     var unitName = "Unit2"; 
     $(".assUnit option:contains('"+unitName+"')").remove(); 
    }); 

});