试图阻止Jquery函数循环

时间:2016-08-31 13:15:07

标签: javascript jquery html

我正在使用Jquery构建拖放应用程序。所有功能都正常工作,但我使用html.change来启用已删除项目的脚本。我现在遇到的问题取决于我对应用程序中的HTML做了多少更改,这会减慢应用程序的速度。

这是我使用

的Javascript代码
$(function() {
  $('html').change(function() {
    $(".checkdrop").change(function() {
      var checkdrop = $(this).closest('.labelDrop').find('.checkdrop').val();
      var textul = $(this).closest('.labelDrop').find('.textUL');
      var input = '<input type="text" placeholder="Value" class=""><br>';
      if (checkdrop >= 3) {
        $(this).closest('.labelDrop').find('.three').css("display", "block");
        $('th.three').css("display", "table-cell")
      }
      if (checkdrop >= 4) {
        $(this).closest('.labelDrop').find('.four').css("display", "block");
        $('th.four').css("display", "table-cell")
      }
      if (checkdrop >= 5) {
        $(this).closest('.labelDrop').find('.five').css("display", "block");
        $('th.five').css("display", "table-cell")
      }
      if (checkdrop >= 6) {
        $(this).closest('.labelDrop').find('.six').css("display", "block");
        $('th.six').css("display", "table-cell")
      }
      if (checkdrop >= 7) {
        $(this).closest('.labelDrop').find('.seven').css("display", "block");
        $('th.seven').css("display", "table-cell")
      }
      if (checkdrop >= 8) {
        $(this).closest('.labelDrop').find('.eight').css("display", "block");
        $('th.eight').css("display", "table-cell")
      }

      if (checkdrop == 2) {
        $(this).closest('.labelDrop').find('.three,.four,.five,.six,.seven,.eight').css("display", "none").val("")
      }
      if (checkdrop == 3) {
        $(this).closest('.labelDrop').find('.four,.five,.six,.seven,.eight').css("display", "none").val("")
      }
      if (checkdrop == 4) {
        $(this).closest('.labelDrop').find('.five,.six,.seven,.eight').css("display", "none").val("")
      }
      if (checkdrop == 5) {
        $(this).closest('.labelDrop').find('.six,.seven,.eight').css("display", "none").val("")
      }
      if (checkdrop == 6) {
        $(this).closest('.labelDrop').find('.seven,.eight').css("display", "none").val("")
      }
      if (checkdrop == 7) {
        $(this).closest('.labelDrop').find('.eight').css("display", "none").val("")
      }
    });
  });
});

如果我在&#34; checkdrop&#34;的最后发出警告它将被触发与我对HTML所做的更改量相同的次数。

有没有办法让这更容易并阻止代码循环?

提前致谢。

2 个答案:

答案 0 :(得分:0)

查看代码时,我发现一个问题。

为什么你需要看到所有的HTML?

表演顺利

  $('html').change(function() {

删除jquery的方法find(),因为骑行和所有dom元素都不能很好地执行

我不知道您的HTML,但请尝试使用parentNode找到最接近的

答案 1 :(得分:0)

我认为这是你的解决方案,我不知道你的HTML代码结构,否则它可能会导致优化解决方案然后这个。

SELECT *         -- find
FROM table2 t2   -- from t2
WHERE EXISTS (
    SELECT * FROM table1 t1
    WHERE t1.name = t2.name -- that match
    AND t1.age = t2.age     -- Huh? "multiple matching fields" ?
    AND t1.age > 18         -- with the same condition
    );