简体   繁体   English

jQuery-该代码有什么问题?

[英]jQuery - What's wrong with that code?

I've onclick jquery code that doesn't give any response even with an error! 我的onclick jQuery代码即使出现错误也不会给出任何响应!

I don't know why, but here's my jQuery Code : 我不知道为什么,但这是我的jQuery代码

/* This Is working correctly */
$(".add-blog .blog-add-form .add-article .input-group select").on("change", function() {
  var tagsUl = '<li class="' + $(this).val() + '"><i class="fa fa-fw fa-times" aria-hidden="true"></i> ' + $(".add-blog .blog-add-form .add-article .input-group select option:selected").text() + '</li>';
  $(".add-blog .blog-add-form .add-article .input-group ul").append($(tagsUl));
  $(".add-blog .blog-add-form .add-article .input-group select option:selected").remove();
});

/* This isn't working correctly */
$(".add-blog .blog-add-form .add-article .input-group ul li i").on("click", function() {
  var optionValue = $(this).parent().attr("class"),
    optionText = $(this).parent().text(),
    appendedOption = "<option value='" + $(optionValue) + "'>" + $(optionText) + "</option>";
  $(this).parent().parent().parent().children("select").append($(appendedOption));
  $(this).parent().remove();
});

I'm 100% sure that this element selector exist 我100%确定此元素选择器存在
when I open the css element inspector, select the element and put the same element selector, it shows that this element is the selected one. 当我打开css元素检查器时,选择该元素并放入相同的元素选择器,它表明此元素是选定的元素。

anyway, here's my HTML Code : 无论如何,这是我的HTML代码

<article class='add-blog'>
  <div class='blog-add-form'>
    <div class='add-article'>
      <form method='POST' action='example.php' class='form-horizontal'>
        <div class='input-group'>
          <select></select>
          <ul class='list-unstyled selected-ul'>
            <li class='0'><i class='fa fa-fw fa-times'></i> Anytext</li>
          </ul>
        </div>
      </form>
    </div>
  </div>
</article>

Your problem is that you are casting your optionValue and optionText to another jQuery object when you add them to appendOption . 您的问题是,当将他们的optionValueoptionText添加到appendOption时,它们正在投射到另一个jQuery对象。 Remove the $() around optionValue and optionText and it should work. 删除optionValueoptionText周围的$() ,它应该可以工作。

 $(".add-blog .blog-add-form .add-article .input-group ul li i").on("click", function() { var optionValue = $(this).parent().attr("class"); var optionText = $(this).parent().text(); var appendedOption = "<option value='" + optionValue + "'>" + optionText + "</option>"; $(this).parent().parent().parent().children("select").append($(appendedOption)); $(this).parent().remove(); }); 
 <link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <article class='add-blog'> <div class='blog-add-form'> <div class='add-article'> <form method='POST' action='example.php' class='form-horizontal'> <div class='input-group'> <select></select> <ul class='list-unstyled selected-ul'> <li class='0'><i class='fa fa-fw fa-times'></i> Anytext</li> </ul> </div> </form> </div> </div> </article> 

You're trying to pass to the jQuery function ( $ ) a string, and it interept it as a selector: 您试图将一个字符串传递给jQuery函数( $ ),并将其作为选择器插入:

appendedOption  = "<option value='" + $(optionValue) + "'>" + $(optionText) + "</option>";

Instead, do it as follows: 而是,请按照以下步骤操作:

appendedOption  = "<option value='" + optionValue + "'>" + optionText + "</option>";

 $(".add-blog .blog-add-form .add-article .input-group ul li i").on("click", function() { var optionValue = $(this).parent().attr("class"), optionText = $(this).parent().text(), appendedOption = "<option value='" + optionValue + "'>" + optionText + "</option>"; $(this).parent().parent().parent().children("select").append(appendedOption); $(this).parent().remove(); }); 
 <link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <article class='add-blog'> <div class='blog-add-form'> <div class='add-article'> <form method='POST' action='example.php' class='form-horizontal'> <div class='input-group'> <select></select> <ul class='list-unstyled selected-ul'> <li class='0'><i class='fa fa-fw fa-times'></i> Anytext</li> </ul> </div> </form> </div> </div> </article> 

Solved 解决了

Thanks to everyone who helped me in solving this problem ! 感谢所有帮助我解决此问题的人!
When you guys have told me that the code is working fine with you, 你们告诉我代码对您来说很好用时,
I knew that the problem isn't from the onclick jQuery function. 我知道问题不在于onclick jQuery函数。
My new code : 我的新代码:

 $(".add-blog .blog-add-form .add-article .input-group select").on("change", function() { var tagsUl = '<li class="' + $(this).val() + '"><i class="fa fa-fw fa-times" aria-hidden="true"></i> ' + $(".add-blog .blog-add-form .add-article .input-group select option:selected").text() + '</li>'; $(".add-blog .blog-add-form .add-article .input-group ul").append($(tagsUl)); $(".add-blog .blog-add-form .add-article .input-group select option:selected").remove(); $(".add-blog .blog-add-form .add-article .input-group ul li i").on("click", function() { var optionValue = $(this).parent().attr("class"), optionText = $(this).parent().text(), appendedOption = "<option value='" + optionValue + "'>" + optionText + "</option>"; $("select").append(appendedOption); $(this).parent().remove(); }); }); 

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

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