Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery UI按钮切换_Jquery_Jquery Ui_Callback_Toggle - Fatal编程技术网

jQuery UI按钮切换

jQuery UI按钮切换,jquery,jquery-ui,callback,toggle,Jquery,Jquery Ui,Callback,Toggle,我正在尝试从POST操作的回调切换UI按钮。jquery UI按钮需要将“UI图标UI图标减号”或“UI图标UI图标选中”作为span.class 我试图切换-但切换只删除并添加回类的一部分-它不会交换整个类。这就是我目前所处的困境: $('#toggle-page, a.toggle-page').click(function() { pageID = $(this).parent('div').attr('id'); $.post( "webadmin/pages.toggle.se

我正在尝试从POST操作的回调切换UI按钮。jquery UI按钮需要将“UI图标UI图标减号”或“UI图标UI图标选中”作为span.class

我试图切换-但切换只删除并添加回类的一部分-它不会交换整个类。这就是我目前所处的困境:

$('#toggle-page, a.toggle-page').click(function() {
pageID = $(this).parent('div').attr('id');
$.post(
    "webadmin/pages.toggle.serialize.php", 
    {id : pageID },
    function(data, textStatus, xhr) {
      if ($("#"+pageID+" a#toggle-page span").hasClass('ui-icon ui-icon-minus')) {
            $("#"+pageID+" a#toggle-page span").removeClass('ui-icon ui-icon-minus');
            $("#"+pageID+" a#toggle-page span").addClass('ui-icon ui-icon-check');
          }
      if ($("#"+pageID+" a#toggle-page span").hasClass('ui-icon ui-icon-check')) {
            $("#"+pageID+" a#toggle-page span").removeClass('ui-icon ui-icon-check');
            $("#"+pageID+" a#toggle-page span").addClass('ui-icon ui-icon-minus');
          }
    }
);
});
我知道上面的代码不是正确的方法。。。但是有人能给我指出正确的方向吗?
Id等有点嵌套,因为有多个条目可以编辑-因此是pageID内容。

这应该更接近您想要的内容。如果计划再次使用jQuery选择器,请始终缓存其返回:

$('#toggle-page, a.toggle-page').click(function() {
  var  $page = $(this).parent('div'),
      pageID = $page.attr('id');
  $.post(
      "webadmin/pages.toggle.serialize.php", 
      {id : pageID },
      function(data, textStatus, xhr) {
        var $span = $page.find('a#toggle-page span');
        if($span.hasClass('ui-icon-minus')) {
          $span.removeClass('ui-icon-minus').addClass('ui-icon-check')
        } else {
          $span.removeClass('ui-icon-check').addClass('ui-icon-minus')
        }
      }
  );
});

这应该更接近你想要的。如果计划再次使用jQuery选择器,请始终缓存其返回:

$('#toggle-page, a.toggle-page').click(function() {
  var  $page = $(this).parent('div'),
      pageID = $page.attr('id');
  $.post(
      "webadmin/pages.toggle.serialize.php", 
      {id : pageID },
      function(data, textStatus, xhr) {
        var $span = $page.find('a#toggle-page span');
        if($span.hasClass('ui-icon-minus')) {
          $span.removeClass('ui-icon-minus').addClass('ui-icon-check')
        } else {
          $span.removeClass('ui-icon-check').addClass('ui-icon-minus')
        }
      }
  );
});

我会这样做:

$('#toggle-page, a.toggle-page').click(function() {
pageID = $(this).parent('div').attr('id');
$.post(
    "webadmin/pages.toggle.serialize.php", 
    {id : pageID },
    function(data, textStatus, xhr) {
      var node = $("#"+pageID+" a#toggle-page span");
      node.toggleClass('ui-icon-minus');
      node.toggleClass('ui-icon-check');
    }
);
});

我会这样做:

$('#toggle-page, a.toggle-page').click(function() {
pageID = $(this).parent('div').attr('id');
$.post(
    "webadmin/pages.toggle.serialize.php", 
    {id : pageID },
    function(data, textStatus, xhr) {
      var node = $("#"+pageID+" a#toggle-page span");
      node.toggleClass('ui-icon-minus');
      node.toggleClass('ui-icon-check');
    }
);
});

哦,第一个如果行得通,第二个不行!因此,根据当前设置的内容,它将切换为一种方式。使用上面的代码集,它将从正切换到负,但不会返回。实际上,您只需要在第二个上设置一个
else if
,但下面的答案是一个更好的方法:)哦-第一个if将起作用-不是第二个!因此,根据当前设置的内容,它将切换为一种方式。使用上面的代码集,它将从正切换到负,但不会返回。实际上,您只需要在第二个代码集上添加一个
else if
,但下面的答案是一个更好的方法:)我对jquery的所有内容都是陌生的-但您似乎在混合一些php?或者我错了($变量前面的符号…@标记,一点也没有。无论何时返回jQuery结果集,通常的做法是将其存储在以
$
开头的变量中,以便将其与平面变量(布尔、字符串)和DOM元素区分开来。然后,在整个应用程序中,您知道
$varname
可以接受任何jQuery方法(即
$varname.addClass()
),但是
myDiv
不能也必须这样使用:
$(myDiv).addClass()
。希望这是有道理的。此外,这个答案更有效,因为它只查找一次
$page
,并查找一次
$span
,而不是
$(“#”+pageID+…
,后者试图通过ID来查找它。我对整个jquery内容都不熟悉-但似乎您在混用一些php?或者我错了($sign front the variable…)@标记,一点也不。每当您返回jQuery结果集时,通常的做法是将其存储在以
$
开头的变量中,以便您可以将其与平面变量(布尔值、字符串)和DOM元素区分开来。然后,在整个应用程序中,您知道
$varname
可以接受任何jQuery方法(即
$varname.addClass()
),但是
myDiv
不能也必须这样使用:
$(myDiv).addClass()
。希望这是有意义的。此外,这个答案更有效,因为它只查找一次
$页面
,并查找一次
$span
而不是试图通过ID查找它的
$('#'+pageID+…
)。