2017-07-29 57 views
0

这是我的第一个问题,我一直在寻找这个问题很长时间,我也不仅仅是jQuery和JavaScript的新手,我现在需要它用于非常小的任务,所以我只是深入了解它而深入了解它。

我正在使用Laravel 5.4,并且我有一个表格,这个表格的主体是由一个循环组成的,因为我需要它来显示来自数据库的结果,并不重要,但仅仅是为了解释。我给了一个图标,如果点击它将执行一些操作,首先渲染一个确认消息,然后删除该行,如果是单击。

问题是,如果单击第一行的图标,而不是其他图标,我可以将其渲染。 我尝试了各种方法,但似乎不工作,也可能我误解的文档,或者我不理解它的使用

我的代码是非常简单的(不执行删除任务):

$('document').ready(function(){ 
    $('#delete').each(function(){ 
     $(this).click(function(){ 
      return!! confirm("Are you sure you want to delete this?"); 
     }); 
    }); 
}); 

我只想让确认框出现在我点击的每个图标上!

在此先感谢!如果你需要我用更多的信息更新这个问题,请告诉我!

回答

0

这可能是值得给予this读,当你得到了片刻。了解唯一标识符和类名称之间的区别将有助于您在学习中取得进步。

解决您的问题,最佳做法是使用类名称而不是唯一标识符。在可能的情况下,将元素上的id="delete"更改为class="delete"。这样,我们就可以绑定任何元素上的确认对话框,不管它是否已经在DOM中,或者在以后添加。

$('.delete').click(function() { 
    return !!confirm("Are you sure you want to delete this?"); 
}); 

如果要添加包含通过AJAX此按钮行,然后你想要的功能绑定像这样:

$(document).on('click', '.delete', function() { 
    return !!confirm("Are you sure you want to delete this?"); 
}); 

希望这有助于!

+0

我想我不是一个新手只是在jQuery哈哈,谢谢你帮助我,这解决了我的问题,谢谢你的参考,我一定会读! –

0

你可以在一个包含元素上使用jquery的.on来获取在所有包含的#delete元素上触发的事件。

$('body').on('click', '#delete', function(ev) { 
    return!! confirm("Are you sure you want to delete this?"); 
}); 

如果你需要保持信息准确地对被点击哪一个元素,它在ev.target用(前)。

0

您不能多次使用ID属性。我建议你使用类(比如class="delete")来代替,并使用此:

$('document').ready(function(){ 
    $(document).on('click', '.delete', function() { 
     return!! confirm("Are you sure you want to delete this?"); 
    }); 
});