HTML5前端页面取值问题

前端用的是div+span做的下拉选单,我自己取值每次只能取到第一个值,不管我选取的第几个,我的取值代码有问题,求大神解答~
主菜单1

主菜单2

前端页面代码

我获取到的值,默认只能第一行

$(".dia_menu_lst span").click(function (e) {
alert("this is my function!!!!!!");
// var weight=$("[data-att='dia_weig']").val();
var ctgId = $(".swiper-wrapper p").find("input").attr("value");
var weight =$('#weigdiv span i').html();
var neatness =$('#neatdiv span i').html();
var color =$('#colordiv span i').html();
alert(ctgId+" "+weight+" "+neatness+" "+color);});

                        我的js取值代码

7个回答

$(".dia_menu_lst span").click(function () {
var data = $(this).attr('data');
}

u014261813
慕凉生 我做错了。要点确定的时候才获取值并发送,请问这个您会吗?
2 年多之前 回复

分析:
1. var weight =$('#weigdiv span i').html() 只能取 weigdiv span i 第一个元素,若想取选中,可用$(this).find('i').html();
2. 当前选择方式只能选取点中div的span,无法选取其他div中的span ,需要做一个选中状态添加

解决方式:

  1. 为选中添加css,例如在head中添加 .selected{color:red}
  2. 修改js代码如下
    $(".dia_menu_lst span").click(function (e) {
    $(this).siblings().each(function){
    $(this).removeClass("selected"); //去除同一个div下span兄弟节点的选中状态
    }
    $(this).toogleClass("selected"); // 点击某个span时添加或移除选中状态

    var ctgId = $(".swiper-wrapper p").find("input").attr("value");
    var weight =$('#weigdiv .selected i').html(); //选择含有选中状态selected的元素(有选中状态状态的span)
    var neatness =$('#neatdiv .selected i').html();
    var color =$('#colordiv .selected i').html();
    alert(ctgId +" "+weight+" "+neatness+" "+color);
    });

u014261813
慕凉生 each(function)这个后面的报错解决了,是你的括号不对,又有了其他错,兄弟,方便加微信聊一下吗?Muliangs002
2 年多之前 回复
u014261813
慕凉生 尝试了一下,each(function)后面报错了,excepting newline or semicolon,这个怎么解决啊?
2 年多之前 回复
u014261813
慕凉生 这个貌似是最好的办法,我采纳得太快了,谢谢你,非常详细,你是做前端的吗
2 年多之前 回复

这样写只能查到dom节点的第一个元素,,不如换成this试试

大概是这样,,虽然改的好像,,是不太对

 $(".dia_menu_lst span").click(function (e) {
alert("this is my function!!!!!!");
var ctgId = $(this).find("input").attr("value");
var weight =$(this).html();
var neatness =$(this).html();
var color =$(this).html();
alert(ctgId+" "+weight+" "+neatness+" "+color);});

你单独把取值和设置值区分开,

 function getValue(){
 var ctgId = $(".swiper-wrapper p").find("input").attr("value");
var weight =$('#weigdiv span i').html();
var neatness =$('#neatdiv span i').html();
var color =$('#colordiv span i').html();
alert(ctgId+" "+weight+" "+neatness+" "+color);});
 }

设置值,可以用:

// 第一个
$("#wgidiv span").click(function (e) {
        $("#ajfds").val(this.data); // ajfds是个隐藏域
});

// 第二个
$("#wwuiv span").click(function (e) {
        $("#wwuiv").val(this.data); // wwuiv是个隐藏域
})

没有理解jquery选择器,

var weight =$('#weigdiv span i').html();

$('#weigdiv span i') 这样选取出来是一个集合,类似于数组,但不是数组。
对于一个集合.html()它怎么知道是哪一个,所以默认就是第一个咯

$('#neatdiv span i')這個有問題,因爲$('#neatdiv)下面有很多的span,你沒有做標記,選中的肯定是第一個span。其他的取值都是這問題
最簡單的用this屬性點擊那個去取那個值
$(".dia_menu_lst span").click(function (e) {
var weight =$(this).html();
alert(weight)
});

事件触发后获取的数值不对,你要点击哪个获取哪个,用this指向该点击元素进行相应的赋值就行了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐