鍍金池/ 問答/HTML5  HTML/ jq修改li顯示隱藏報(bào)錯(cuò)?

jq修改li顯示隱藏報(bào)錯(cuò)?

$('#city').on('change',function(){

    var s=$("#header_right_imgs_ul>li");
    for(var i=0;i<s.length;i++){
        if(s[i].className!= $(this).val()) {
            console.log(s[i].className);
            s[i].css({"display":"none"});
        }
    }

})


clipboard.png


以上代碼li是通過ajax從后臺獲取動態(tài)渲染到#header_right_imgs_ul里的,#city為一個(gè)select 下拉框,每個(gè)li都有class 名字有的不一樣,我想做在select選中的時(shí)候li class名和select選中值不一致的li隱藏,console.log(s[i].className);輸出這個(gè)可以成功獲取到每個(gè)Li,但s[i].css({"display":"none"});為什么改不了,應(yīng)該怎么寫 求路過前輩指點(diǎn) 謝謝~~!

回答
編輯回答
心悲涼

s[i]在這個(gè)地方是原生dom對象,不是jquery對象,可以按照樓上說的做法,也可以使用將原生dom對象轉(zhuǎn)化為jquery的方式$(s[i]).css("display","none")

2017年3月11日 01:50
編輯回答
陪我終

s.eq(i).css即可

看你的需求,應(yīng)是s.eq(i).hide()

2017年8月11日 04:57
編輯回答
做不到

他們說的基本都差不多了,看原理的話,就看他們。我來寫的簡單點(diǎn)

$('#city').on('change',function(){
    var _class = $(this).val();
    var s=$("#header_right_imgs_ul>li").hide().filter("."+_class).show();
})
2018年2月16日 16:52
編輯回答
假灑脫

因?yàn)閟[i]是原生dom對象,不是jquery對象,可以改成s[i].style.display = "none"

2017年4月12日 12:09
編輯回答
尐懶貓

來個(gè)全jQ的:

$('#city').on('change', function(){
    var s = $('#header_right_imgs_ul').children('li'),
        v = $(this).val();
    s.each(function(i, ele){
        if (ele.hasClass(v)) {
            console.log(ele.get(0).className);
            ele.hide();
        }
    })
})
  1. 其它答案說了,jQ對象的數(shù)組成員會返回原生DOM對象;另外用.get()也能拿到原生對象
  2. 顯示隱藏這個(gè)需求,用jQ的.show().hide()來做是最好的,因?yàn)闀詣訋湍愦孀ο笾暗膁isplay值(新手常會碰到一個(gè)display不為block的東西,做了一遍hide之后再用display:block,然后“咦?為啥樣式變了?”),其次的方案是在css里寫一個(gè).hide { display: none; }的類,然后用.addClass()去做
  3. jQ的each很好用,循環(huán)jQ對象的時(shí)候可以用.each(),如果是數(shù)組或者對象的話,用$.each()就行了
  4. 在一個(gè)jQ對象集合里返回個(gè)別對象,可以用.eq()
  5. 其它不熟的API去查文檔
2017年4月23日 19:00
編輯回答
落殤
s[i].style.display = "none"
2018年7月12日 14:12