gpt4 book ai didi

javascript - 将 ListView 的值传递给ajax

转载 作者:可可西里 更新时间:2023-10-31 23:18:43 25 4
gpt4 key购买 nike

我有一个动态创建的列表。创建列表的部分代码是:

<ul>
<?
foreach ($folders as $folder)
{
$folder = str_replace("{imap.gmail.com:993/imap/ssl}", "", $folder);
$folder2 = str_replace("[Gmail]/", "", $folder);
?>
<li>
<a><div id="box"><? echo $folder2; ?> </div></a>
</li>
<?}
</ul>

<div id="maillist"></div>

$folder 的 o/p

GMAIL/All Mail
GMAIL/Drafts
GMAIL/Important

$folder2 的 o/p

All Mail
Drafts
Important

我想要的是,当用户点击所有邮件时,对应的值(在本例中为:GMAIL/所有邮件)应该通过 ajax 传递给另一个脚本。列表中的其他值也应遵循相同的过程

ajax代码

<script>
$(document).ready(function(){
$('#box').change(function(){

var boxid = $('#box').val();
console.log($('#box'))
if(boxid != 0)
{

$.ajax({
type:'post',
url:'a_fetchmaillist.php',
data:{id:boxid},
cache:false,
success: function(returndata){
$('#maillist').html(returndata);
console.log(returndata)
}
});
}
})
})
</script>

谁能告诉我是否可以做我想做的事,如果可以,那将如何完成

最佳答案

首先不要多次分配相同的id,而是设置一个类(例如box)。

然后为特定文件夹分配数据属性(例如 box-allMails)并在更改时选择该属性:

foreach ($folders as $folder)
{
$folder = str_replace("{imap.gmail.com:993/imap/ssl}", "", $folder);
$folder2 = str_replace("[Gmail]/", "", $folder);
?>
<li>
<div class="box" data-folder="<? echo $folder2 ?>"><? echo $folder2; ?></div>
</li>
<?}

然后改变:

$(document).on('click', '.box', function() {
var folder = $(this).attr('data-folder');
// ajax call..
});

更新

重要提示:您必须监听“点击”事件而不是“更改”事件,因为您点击的是 div,而不是输入(我更改了代码)。

事件委托(delegate):注意代码:

$(document).on('click', '.dynamic-element', function() { .. })

代替:

$('.element').on('click', function() { .. });

第二个将不起作用,因为您正在动态创建元素。

可点击:除非您想重定向到另一个页面,否则不必插入 anchor 标记即可使列表项可点击。在您的情况下,您可以设置 .box div 的样式以获得这样的光标指针:

CSS

.box { cursor:pointer }

jQuery 会处理剩下的事情(查看示例)

$(document).on('click', '.box', function() {
var folder = $(this).attr('data-folder');
alert('You clicked on: ' + folder);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul>
<li><div class="box" data-folder="folderOne">Folder One</div></li>
<li><div class="box" data-folder="folderTwo">Folder Two</div></li>
<li><div class="box" data-folder="folderThree">Folder Three</div></li>
<li><div class="box" data-folder="folderFour">Folder Four</div></li>
</ul>

关于javascript - 将 ListView 的值传递给ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32368355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com