javascript - 关于jQuery的 :contains选择器好像有个问题,但是不知怎么改正
迷茫
迷茫 2017-04-10 17:39:51
[JavaScript讨论组]

<select id="s1" multiple="multiple" size=10>
<option>选项1</option>
<option>选项2</option>
<option>选项3</option>
<option>选项4</option>
<option>选项5</option>
</select>
<p id="bt">
<button id="bt1">>></button>
<button id="bt2">>>></button>
<button id="bt3"><<</button>
<button id="bt4"><<<</button>
</p>
<select id="s2" multiple="multiple" size=10></select>
下面是jQuery:

 $(function(){
        $("#bt1").click(function(){
    var $targ=$("#s1 option:selected");
    $("#s2 option:contains($targ.text())").remove();
    //$("#s2 option").has($targ).remove();
    $("#s2").append("<option>"+$targ.text()+"</option>")
    $targ.hide();
    return false;
})
$("#bt3").click(function(){
        var $targ=$("#s2 :selected");        
        $("#s1 option:containts($targ.text())").show();//问题好像在这里,选择有问题
        $targ.remove();
        return false;
        })    
})

问题是点击第三个按钮让右边已选的选项移到左边,但是右边所有的选项都移到左边了??而且button按钮好像刷新了页面。我return false都不能阻止button的默认行为
下面是截图:

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(2)
PHPz
$("#bt3").click(function(){
        var $targ=$("#s2 option:selected");         //问题出现在这里,少了option
        $("#s1 option:containts($targ.text())").show();
        $targ.remove();
        //return false;   //不用return false,直接在你html代码里面将button添加type属性应该就不会有刷新问题了。<button type="button"></button>
        })    
})
天蓬老师

:contains 选择器里接受的是文本,所以你传进去的文本是 "$targ.text()" 这个文本,它不会运算成你想要的值再去执行代码,所以代码改成这样就可以成功:

$("#s1 option:contains('" + $targ.text() + "')").show();

可是话说,你为什么要写这么复杂的选择器?如果只是把 option 自由在左右任意移动,直接用 append 就行啦,直接 append 是有移动功能的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号