繁体   English   中英

如何使用 JQuery 在列表中添加元素

[英]How to Add element in a list with JQuery

我刚开始使用 jQuery,当我点击一个按钮时,我想在我的 HTML 中添加li元素。 然后我想添加一个按钮,当它被点击时清除我的列表。 这部分工作正常,但是当我单击清除按钮时,它禁用了其他按钮。

我的 html:

<!DOCTYPE html>
<html lang="fr">
  <head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="css/style.css">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script type="text/javascript" src="js/index.js"></script>
    <link rel="shortcut icon" href="res/MPS.png" type="image/x-icon"/>
    <link rel="icon" href="res/MPS.png" type="image/x-icon"/>
    <title>Historique</title>
  </head>
  <body>
    <div class="filtres">
      <input id="filtre1" type="button" value="filter 1" onclick="addFiltre1()">
      <input id="filtre2" type="button" value="filter 2" onclick="addFiltre2()">
      <input id="filtre3" type="button" value="filter 3" onclick="addFiltre3()">
      <input id="filtre4" type="button" value="filter 4" onclick="addFiltre4()">
      <input id="filtre5" type="button" value="filter 5" onclick="addFiltre5()">

      <input id="clear" type="button" value="Clear filters" onclick="removeFilters()">
    </div>

    <div id="liste">
      <ul>
      </ul>
    </div>
  </body>
</html>

我的 JS:

function addFiltre1() {
    $("<ul>");
    $("<li>Filter 1</li>").appendTo("ul");
}

function addFiltre2() {
    $("<ul>");
    $("<li>Filter 2</li>").appendTo("ul");
}

function addFiltre3() {
    $("<ul>");
    $("<li>Filter 3</li>").appendTo("ul");
}

function addFiltre4() {
    $("<ul>");
    $("<li>Filter 4</li>").appendTo("ul");
}


function addFiltre5() {
    $("<ul>");
    $("<li>Filter 5</li>").appendTo("ul");
}

function removeFiltres() {
    $("#liste").html('');
}

我不明白问题出在哪里以及如何解决。

你必须清除#liste ul而不是#liste 当你清空你的#liste时,它会删除你的 appendTo 目标<ul></ul>标签。 在该操作之后,您再次尝试在<ul></ul>标记中追加到,但它已被删除。 所以你必须清理内部#liste ul

您的声明removeFilters()并且您的按钮 function名称将相同因为您的按钮正在调用以相同名称声明的 function 。

您可以在 html('') 方法的 div 实例中使用直接empty()方法清除内部 HTML。

 function addFiltre1() { $("<ul>"); $("<li>Filter 1</li>").appendTo("ul"); } function addFiltre2() { $("<ul>"); $("<li>Filter 2</li>").appendTo("ul"); } function addFiltre3() { $("<ul>"); $("<li>Filter 3</li>").appendTo("ul"); } function addFiltre4() { $("<ul>"); $("<li>Filter 4</li>").appendTo("ul"); } function addFiltre5() { $("<ul>"); $("<li>Filter 5</li>").appendTo("ul"); } function removeFiltres() { $("#liste ul").empty(''); }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="filtres"> <input id="filtre1" type="button" value="filter 1" onclick="addFiltre1()"> <input id="filtre2" type="button" value="filter 2" onclick="addFiltre2()"> <input id="filtre3" type="button" value="filter 3" onclick="addFiltre3()"> <input id="filtre4" type="button" value="filter 4" onclick="addFiltre4()"> <input id="filtre5" type="button" value="filter 5" onclick="addFiltre5()"> <input id="clear" type="button" value="Clear filters" onclick="removeFiltres()"> </div> <div id="liste"> <ul> </ul> </div>

有两个问题,首先你有一个类型错误,你正在使用removeFiltres()removeFilters()

其次将ul添加到$("#liste").html(''); 它看起来像$("#liste ul").html(''); 然后它工作。

您可以使用以下方法使您的代码更干净:

$('[id^=filtre]').click(function(){
  $("<li>Filter"+$(this).data('id')+"</li>").appendTo("ul");
});

演示

 function addFiltre1() { $("<ul>"); $("<li>Filter 1</li>").appendTo("ul"); } function addFiltre2() { $("<ul>"); $("<li>Filter 2</li>").appendTo("ul"); } function addFiltre3() { $("<ul>"); $("<li>Filter 3</li>").appendTo("ul"); } function addFiltre4() { $("<ul>"); $("<li>Filter 4</li>").appendTo("ul"); } function addFiltre5() { $("<ul>"); $("<li>Filter 5</li>").appendTo("ul"); } function removeFiltres() { $("#liste ul").html(''); }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="filtres"> <input id="filtre1" type="button" value="filter 1" onclick="addFiltre1()"> <input id="filtre2" type="button" value="filter 2" onclick="addFiltre2()"> <input id="filtre3" type="button" value="filter 3" onclick="addFiltre3()"> <input id="filtre4" type="button" value="filter 4" onclick="addFiltre4()"> <input id="filtre5" type="button" value="filter 5" onclick="addFiltre5()"> <input id="clear" type="button" value="Clear filters" onclick="removeFiltres()"> </div> <div id="liste"> <ul> </ul> </div>

1.由于您使用的是 jQuery 然后使用classdata-id概念来清理/减少您的代码

2. removeFiltres()removeFilters()的拼写差异。

3. $("#liste").html(''); 需要是$("#liste ul").html('');

工作片段: -

 $('.addLi').click(function(){ $("<li>Filter "+$(this).data('id')+"</li>").appendTo("ul"); }); function removeFiltres() { $("#liste ul").html(''); }
 <.DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="css/style:css"> <script src="https.//cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script type="text/javascript" src="js/index.js"></script> <link rel="shortcut icon" href="res/MPS.png" type="image/x-icon"/> <link rel="icon" href="res/MPS.png" type="image/x-icon"/> <title>Historique</title> </head> <body> <div class="filtres"> <input type="button" value="filter 1" data-id="1" class="addLi"> <input type="button" value="filter 2" data-id="2" class="addLi"> <input type="button" value="filter 3" data-id="3" class="addLi"> <input type="button" value="filter 4" data-id="4" class="addLi"> <input type="button" value="filter 5" data-id="5" class="addLi"> <input id="clear" type="button" value="Clear filters" onclick="removeFiltres()"> </div> <div id="liste"> <ul> </ul> </div> </body> </html>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM