小编bil*_*can的帖子

jQuery UI.hide('slide')带边距的奇怪行为

我在.hide('slide')许多元素上使用jQuery UI的动画.问题是当我margin在这些元素上指定一个时,动画似乎跳了下来,一旦完成,就会返回到原来的位置.如果我margin从这些元素中删除,问题就不复存在了.

我已经设置了一个简化的示例小提示来显示问题

CSS

div.score {
    width: 32px;
    height: 32px;
    background-color: blue;
    color: white;
    text-align: center;
    margin: 10px;
    padding-top: 6px;
}
Run Code Online (Sandbox Code Playgroud)

jQuery的

$('div.score').click(function() {
    var $this = $(this);
    $this.hide('slide', { direction: 'right' }, 250, function() {
        $this.show('slide', { direction: 'left' }, 250)
             .text(parseInt($this.text(), 10) + 1);
    });
});
Run Code Online (Sandbox Code Playgroud)

HTML

<div class="score">0</div>
<div class="score">0</div>
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释这是什么原因,这是一个错误吗?

jquery jquery-ui

14
推荐指数
1
解决办法
4758
查看次数

Chrome:滚动<select>会触发change()事件

我有一个属性<select>元素multiple="multiple".在Chrome(v27)中,change()当用户通过单击并使用鼠标拖动滚动时,会触发事件.选择值后,问题就不复存在了.

示例标记

<select multiple="multiple">
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
  <option value="5">5</option>
</select>
Run Code Online (Sandbox Code Playgroud)

示例jQuery

$('select').on('change', function() {
  alert('Changed!');
});
Run Code Online (Sandbox Code Playgroud)

这是Chrome的错误吗?我试过搜索但没有碰到任何东西.

这是一个小提琴

html javascript jquery google-chrome

10
推荐指数
1
解决办法
2435
查看次数

使用时:children()和find()的行为:首先

我对使用children()find()使用时的行为有点困惑:first.

考虑以下标记:

<div class="parent">
    <div>1</div>
    <div class="child">2</div>
    <div class="child">3</div>
</div>

<div class="parent">
    <div>1</div>
    <div class="child">2</div>
    <div class="child">3</div>
</div>
Run Code Online (Sandbox Code Playgroud)

据我了解,下面应该返回元素的同一个集合,因为没有孙子(这是唯一的区别之间声明find()children()文档).

但是,如果我在第一个类中添加一个类.child,结果会有所不同:

$('.parent').find('.child:first').addClass('active');
Run Code Online (Sandbox Code Playgroud)

结果如下:

<div class="parent">
    <div>1</div>
    <div class="child active">2</div>
    <div class="child">3</div>
</div>

<div class="parent">
    <div>1</div>
    <div class="child active">2</div>
    <div class="child">3</div>
</div>
Run Code Online (Sandbox Code Playgroud)

当使用该children()方法做同样的事情时,我得到:

<div class="parent">
    <div>1</div>
    <div class="child active">2</div>
    <div class="child">3</div>
</div>

<div class="parent">
    <div>1</div>
    <div class="child">2</div>
    <div class="child">3</div>
</div>
Run Code Online (Sandbox Code Playgroud)

为什么?

这是一个小提琴

jquery

10
推荐指数
1
解决办法
186
查看次数

隐藏基于元素属性的ui-datepicker-calendar

inputs我的页面上有多个,所有这些都datepicker附加了jQuery UI的小部件.

我想这样做是show/hide.ui-datepicker-calendar根据data-calendar上属性input的元素.

例如:

<input type="text" data-calendar="false" />
<input type="text" data-calendar="false" />
<input type="text" data-calendar="true" />
Run Code Online (Sandbox Code Playgroud)

所以,前两个不应该显示.ui-datepicker-calendar,但最后应该显示.

我以为我可以利用beforeShow事件来设置元素的显示,但是,在事件触发时,.ui-datepicker-calendar它还不存在:

$('input').datepicker({
  beforeShow: function(el, dp) {
    $('.ui-datepicker-calendar').toggle( !$(el).is('[data-calendar="false"]') );
  }
});
Run Code Online (Sandbox Code Playgroud)

我看过类似的问题,答案是用CSS来隐藏.ui-datepicker-calendar元素:

.ui-datepicker-calendar {
  display: none;
}
Run Code Online (Sandbox Code Playgroud)

但是,这对我不起作用,因为我需要根据元素的data-calendar属性设置display 属性.

有没有一种简单的方法来实现这一目标?我查看了datepickerAPI,但没有遇到任何问题.

这是一个简单的基础小提琴

这是我希望它显示的方式,如果data-calendar是假的

jquery jquery-ui-datepicker

9
推荐指数
1
解决办法
1万
查看次数

用.hide('slide')缓和?

是否可以通过以下方式进行宽松:

('#sideBar').hide('slide', {direction: 'right' }, 
    800, function(){...});
Run Code Online (Sandbox Code Playgroud)

目前它非常紧张,因为它可能会移动100到500像素(取决于内容).我一直在寻找谷歌和大多数人说使用缓和,但在查看文档时我看不到一个缓和的属性.

javascript jquery jquery-effects

7
推荐指数
1
解决办法
1万
查看次数

从可排序项中排除项目

我有以下示例表代码,

<table id="Table1">
<thead>
    <th>Title</th>
</thead>
<tbody>
    <tr>
        <td>Row 1</td>
    </tr>
    <tr>
        <td>Row 2</td>
    </tr>
    <tr>
        <td>Row 3</td>
    </tr>
    <tr class='disabled'>
        <td>Row 4</td>
    </tr>
    <tr>
        <td>Row 5</td>
    </tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

我在jQuery Sortable下面申请,工作正常,

$("#Table1 tbody").sortable({
});
Run Code Online (Sandbox Code Playgroud)

但是,现在我想排除类别为"禁用"的"tr"排序,我要应用下面的代码(jquery选择器),但它不起作用.选择器有什么问题吗?我必须在HTML表格中使用"thead"和"tbody".

或者有其他方法吗?谢谢,

$("#Table1 tbody tr:not(.disabled)").sortable({
});
Run Code Online (Sandbox Code Playgroud)

jquery jquery-selectors jquery-ui-sortable

7
推荐指数
1
解决办法
3934
查看次数

为什么asort适用于多维数组?

如果这是一个非常基本的问题,请道歉.我无意中发现它asort()似乎适用于多维数组:

PHP示例

$animals = array(
  1 => array('name' => 'Zebra'),
  2 => array('name' => 'Fox'),
  3 => array('name' => 'Rabbit'),
  4 => array('name' => 'Dog'),
  5 => array('name' => 'Cat')
);

asort($animals);
var_dump($animals);
Run Code Online (Sandbox Code Playgroud)

产量

array
  5 => 
    array
      'name' => string 'Cat' (length=3)
  4 => 
    array
      'name' => string 'Dog' (length=3)
  2 => 
    array
      'name' => string 'Fox' (length=3)
  3 => 
    array
      'name' => string 'Rabbit' (length=6)
  1 => 
    array
      'name' => string 'Zebra' (length=5)
Run Code Online (Sandbox Code Playgroud)

我想知道为什么这有效吗?

我认为asort() …

php sorting

5
推荐指数
1
解决办法
239
查看次数

AddFixedPriceItem:在VariationSpecifics.NameValueList中指定MPN

我正在更新一些为eBay列表生成XML的代码,其中一部分是添加MPN.

对于单个列表,一切都运行正常,因为品牌和MPN可以通过ItemSpecifics容器指定.但是,对于多变量列表,必须为每个变体指定MPN.

根据文档,它应该在变体的VariationSpecifics.NameValueList容器中指定.

我添加了代码来执行此操作,从而生成XML:

<Variation>
  <SKU>CODE</SKU>
  <StartPrice>99.99</StartPrice>
  <Quantity>124</Quantity>
  <VariationSpecifics>
    <NameValueList>
      <Name>MPN</Name>
      <Value>000001</Value>
    </NameValueList>
    <NameValueList>
      <Name>Choose Colour</Name>
      <Value>Black</Value>
    </NameValueList>
  </VariationSpecifics>
</Variation>
Run Code Online (Sandbox Code Playgroud)

发送列出产品的请求时,它会失败,并回复以下错误:

[1] => Array
    (
        [ShortMessage] => Variation Specifics Mismatch.
        [LongMessage] => Variation Specifics provided does not match with the variation specifics of the variations on the item.
        [ErrorCode] => 21916664
        [SeverityCode] => Error
        [ErrorClassification] => RequestError
    )

[2] => Array
    (
        [ShortMessage] => Missing name in name-value list.
        [LongMessage] => Missing name in …
Run Code Online (Sandbox Code Playgroud)

php ebay-api

5
推荐指数
1
解决办法
597
查看次数

使用min()获取包含最小值的数组

min()的文档显示了以下示例:

// Multiple arrays of the same length are compared from left to right
// so in our example: 2 == 2, but 4 < 5
$val = min(array(2, 4, 8), array(2, 5, 1)); // array(2, 4, 8)
Run Code Online (Sandbox Code Playgroud)

给出以下代码:

$input = [
    [3, 6],
    [2, 9],
];

var_dump(min(...$input)); // returns [2, 9] as expected
Run Code Online (Sandbox Code Playgroud)

如果你使相同的数组关联,它会失败并且似乎总是返回第一个数组:

$input = [
    ["three" => 3, "six"  => 6],
    ["two"   => 2, "nine" => 9],
];

var_dump(min(...$input)); // returns ["three" => 3, "six" => …
Run Code Online (Sandbox Code Playgroud)

php arrays

5
推荐指数
1
解决办法
90
查看次数

总和列总计(每个重复行数据仅一次)

假设我有下orders表,并且我正在检索所有failed订单。

+----+------------------+-------+--------+
| id | email            | total | status |
+----+------------------+-------+--------+
| 1  | john@example.com | 39.99 | failed |
|----|------------------|-------|--------+
| 2  | john@example.com | 39.99 | failed |
|----|------------------|-------|--------+
| 3  | pete@example.com | 19.99 | failed |
+----+------------------+-------+--------+
Run Code Online (Sandbox Code Playgroud)

我需要获取失败订单的总数以及它们的总和,但每个重复行仅获取一次(当相同email且相total同时,该行被视为重复)

目前我有一个非常简单的查询,它获取所有failed订单的总数。我不知道如何去修改它返回所需的数据(我已经试过搞乱与周围DISTINCTGROUP BY没有用。)

SELECT COUNT(*) AS `count`, SUM(`total`) AS `grand_total` FROM `orders` WHERE `status` = 'failed';
Run Code Online (Sandbox Code Playgroud)

返回:

+-------+-------------+
| count | grand_total |
+-------+-------------+ …
Run Code Online (Sandbox Code Playgroud)

mysql sql

3
推荐指数
1
解决办法
3159
查看次数

在保持换档键的同时防止按键

我试图阻止某些键输入到输入框中,但只有在按住键的同时shift按下键才会:

$('selector').keydown(function(e) {
  console.log(e.shiftKey);
  if (e.shiftKey && e.which == 51) {
    e.preventDefault();
    alert('Disallowed');
  }
});
Run Code Online (Sandbox Code Playgroud)

警报触发,但角色仍显示在文本框中.

我试图寻找解释为什么会发生这种情况,但无济于事,任何帮助都将不胜感激!

编辑

删除alert似乎解决问题(这似乎很奇怪),我真的很想知道为什么它以这种方式行事,它似乎没有任何意义.

谢谢

javascript jquery

2
推荐指数
1
解决办法
9506
查看次数

为什么不能多次追加jQuery对象?

我很难理解为什么jQuery对象不能多次追加:

jQuery的

var $divObj = $('<div/>', { 'text': 'This is a div!' });

$('button').on('click', function() {
  $('#example').append($divObj);
});
Run Code Online (Sandbox Code Playgroud)

标记

<div id="example"></div>
<button>Add Div</button>
Run Code Online (Sandbox Code Playgroud)

这仅在第一次button单击时有效.后续点击似乎没有做任何事情.

我知道我可以clone()在追加对象时使用,或者可以将其div作为字符串传递,但我正在寻找解释为什么追加对象不会多次工作的原因.

这是一个小提琴样本

jquery

2
推荐指数
1
解决办法
646
查看次数

如果可见性没有过渡,为什么要对不透明度应用过渡?

鉴于以下代码段:

setInterval( function() {
  $( 'div' ).toggleClass( 'hide show' );
}, 2000 );
Run Code Online (Sandbox Code Playgroud)
div {
  background-color: green;
  height: 100px;
  transition: opacity 2s;
  width: 100px;
}

.hide {
  opacity: 0;
  visibility: hidden;
}

.show {
  opacity: 1;
  visibility: visible;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="hide"></div>
Run Code Online (Sandbox Code Playgroud)

我不希望看到过渡,opacity因为visibility没有过渡,我认为会立即生效。但是,.show应用于 my 时div,我看到了转换。当.hide应用时,它(如我期望的)立即消失。

为什么?

css

2
推荐指数
1
解决办法
39
查看次数