获取id和value动态创建的元素jquery

时间:2014-09-26 06:55:41

标签: javascript php jquery ajax

我需要先前在ajax事件上创建的span的id(以及其他属性,例如value)。 有没有办法做到这一点?

这是在php帖子上创建范围的方式:

    echo "<span class='non-skin-symptom-choice disease_option' ".
        "onclick='showinfo(".$var[0].");' id=".$var[0].">"
        .$var[1]." -- ".number_format($var[3]*100, 2, '.', '')."%</span>";

我想在点击一个复选框时获取其ID。

    $(".chb").click(function(){

        var id= $(this).attr('id');
        var list=[];

        $('.disease_option').each(function (){
            alert("this.val=="+ $(this).attr("val"));        //i need the value here
            var str= $(this).attr("value").split(" -- ")[1];
            alert(str);
            str=str.slice(0,str.length - 1);
            if(parseFloat(str) >=support)
                list.push(id)                                //i need the id here
        });

复选框不是动态创建的,所以$(“。chb”)。click(function(){}有效。

不知何故,$(this).attr(“id”)有效,但$(this).attr(“val”)返回undefined ...我也试过$(this).attr(“value”)但是相同结果。 $(this).val返回空。

4 个答案:

答案 0 :(得分:0)

使用

$(document).on('click','.chb',function(){
  var id = $(".non-skin-symptom-choice").attr("id"); 
})

因为它有一个高级别的事件附件,它可以获取在运行时创建的元素

答案 1 :(得分:0)

您正在使用的click()绑定称为“直接”绑定,它只会将处理程序附加到已存在的元素。它不会受到将来创建的元素的约束。为此,您将使用on()

创建“委托”绑定
$(document).on('click','.chb',function(){
  var id = $(".non-skin-symptom-choice").attr("id"); 
})

可能重复:Click event doesn't work on dynamically generated elements

答案 2 :(得分:0)

试试这个

alert($(".non-skin-symptom-choice").attr("id"));

答案 3 :(得分:0)

如果页面加载时你的DOM节点不存在(即在页面加载后通过AJAX将其添加到页面中),如果你尝试更新它或用jQuery方法读取它,jQuery就看不到它。解决此问题的一种方法是设置jQuery函数以引用要定位的节点的父级的类或ID(假设父类在页面加载时加载到页面中),以及节点的类你想要目标。例如:

$(".chb").click(function(){
    var id = $(".your-parent-class .non-skin-symptom-choice").attr("id");
    }
}