将事件分配给动态元素

时间:2018-01-14 04:31:06

标签: php jquery html

我正在试图制作一个数字网格,当用户点击一个字段时,它会显示所选的数字。但是,当我尝试访问所选项目时,无法找到如何访问元素的值。



$(document).on('click','[id^="item"]',()=>{
    console.log($(this).prop('id'))//return undefined
    let identidad=$(this)
    console.log(identidad)//return a window element
})




我也试过了..



$(document).ready(()=>{

	$('.item').click(()=>{
		console.log($(this).attr('data-value'))//return undefined
    console.log($(this).val())//return Uncaught TypeError: Cannot read property 'toLowerCase' of undefined
    console.log($(this).attr('value')//return undefined
	})

});




    echo "
  <div id='grid'>
        <table>
            ";
            echo "<tr>";
                for ($i=1; $i <=500; $i++) { 
                echo "
                <td class='item active' id='item".$i."' value='".$i."'>".str_pad($i, 3, "0", STR_PAD_LEFT)."</td>   
                ";
                if ($i%10==0 || $i==0)  {
            echo "</tr><tr>";
            }
        }
        echo "  
    </table>        
</div>";

我开始编码所以我很高兴任何评论或建议...

3 个答案:

答案 0 :(得分:2)

从jQuery 3.0开始,。delegate()已被弃用。自jQuery 1.7以来,它被.on()方法取代,因此已经不鼓励使用它。

$("table").on( ".item", "click",()=>{
        //...
})

答案 1 :(得分:0)

您可以使用delegate为动态元素设置事件,如下所示:

$("table").delegate( ".item", "click",()=>{
        //...
})

答案 2 :(得分:0)

尝试使用数据值属性而不是值也使用val()用于输入字段而不是表

在PHP中

<td class='item active' id='item".$i."' data-value='".$i."'>".str_pad($i, 3, "0", STR_PAD_LEFT)."</td>

在JQuery中

$('.item').click(()=>{
        console.log($(this).attr('data-value'))//this return undefined
    console.log($(this).text())//this return error toLowerCase jquery
    })