小编Sha*_*hin的帖子

使用javascript/jQuery获取data-*属性列表

给定具有零个或多个data-*属性的任意HTML元素,如何检索数据的键值对列表.

如上:

<div id='prod' data-id='10' data-cat='toy' data-cid='42'>blah</div>
Run Code Online (Sandbox Code Playgroud)

我希望能够以编程方式检索此:

{ "id":10, "cat":"toy", "cid":42 }
Run Code Online (Sandbox Code Playgroud)

使用jQuery(v1.4.3),$.data()如果事先知道密钥,则使用单个数据位是很简单的,但是如何使用任意数据集来完成这一操作并不明显.

我正在寻找一个'简单'的jQuery解决方案,如果存在,但不会介意低级别的方法.我试图解析,$('#prod').attributes但我缺乏javascript-fu让我失望.

更新

customdata做我需要的.但是,包括一个jQuery插件只是为了它的一小部分功能似乎是一种矫枉过正.

眼球的源代码帮助我修复了自己的代码(并改进了我的javascript-fu).

这是我提出的解决方案:

function getDataAttributes(node) {
    var d = {}, 
        re_dataAttr = /^data\-(.+)$/;

    $.each(node.get(0).attributes, function(index, attr) {
        if (re_dataAttr.test(attr.nodeName)) {
            var key = attr.nodeName.match(re_dataAttr)[1];
            d[key] = attr.nodeValue;
        }
    });

    return d;
}
Run Code Online (Sandbox Code Playgroud)

更新2

正如在接受的答案中所证明的那样,使用jQuery(> = 1.4.4)解决方案是微不足道的.$('#prod').data()将返回所需的数据字典.

javascript jquery html5 attributes

145
推荐指数
4
解决办法
11万
查看次数

暂时禁用auto_now/auto_now_add

我有这样的模型:

class FooBar(models.Model):
    createtime = models.DateTimeField(auto_now_add=True)
    lastupdatetime = models.DateTimeField(auto_now=True)
Run Code Online (Sandbox Code Playgroud)

我想覆盖一些模型实例的两个日期字段(在迁移数据时使用).目前的解决方案如下:

for field in new_entry._meta.local_fields:
    if field.name == "lastupdatetime":
        field.auto_now = False
    elif field.name == "createtime":
        field.auto_now_add = False

new_entry.createtime = date
new_entry.lastupdatetime = date
new_entry.save()

for field in new_entry._meta.local_fields:
    if field.name == "lastupdatetime":
        field.auto_now = True
    elif field.name == "createtime":
        field.auto_now_add = True
Run Code Online (Sandbox Code Playgroud)

有更好的解决方案吗?

django datetime

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

如何从匹配行之后删除文件中的所有行?

我有一个由几行文本组成的文件:

The first line
The second line
The third line
The fourth line
Run Code Online (Sandbox Code Playgroud)

我有一个字符串是其中一行: The second line

我要删除字符串,并在文件中后,所有行,因此它会删除The third line,并The fourth line在除了字符串.该文件将成为:

The first line
Run Code Online (Sandbox Code Playgroud)

我在谷歌搜索了一个解决方案,似乎我应该使用sed.就像是:

sed 'linenum,$d' file
Run Code Online (Sandbox Code Playgroud)

但是如何找到字符串的行号?或者,我该怎么做呢?

linux bash sed

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

python将列表转换为字典

l = ["a", "b", "c", "d", "e"]
Run Code Online (Sandbox Code Playgroud)

我想将此列表转换为如下字典:

d = {"a": "b", "c": "d", "e": ""}
Run Code Online (Sandbox Code Playgroud)

所以基本上,均衡将是关键,而赔率将是价值.我知道我可以用"非pythonic"的方式来实现它,例如if语句的for循环,但我相信应该有更"pythonic"的方法来实现这一点.所以,我感谢任何帮助:)

python dictionary list

71
推荐指数
3
解决办法
33万
查看次数

Javascript toFixed不舍入

我正在使用javascript绑定到一些复选框,而toFixed(2)不是四舍五入.任何想法为什么它不四舍五入?例如,如果数字是859.385仅显示859.38而不是859.39.

我还读过,toFixed根据您使用的浏览器,可以进行不同的循环,任何人都知道如何解决这个问题,以便我的javascript计算与我的php计算相匹配?

var standardprice = parseFloat($('#hsprice_'+this.id.split('_')[1]).val());
var price =  parseFloat($('#hprice_'+this.id.split('_')[1]).val());
var discount =  parseFloat($('#hdiscount_'+this.id.split('_')[1]).val());
var deposit =  parseFloat($('#hdeposit_'+this.id.split('_')[1]).val());

var currSprice = parseFloat($('#hTotalSprice').val());
var currPrice = parseFloat($('#hTotalPrice').val());
var currDiscount = parseFloat($('#hTotalDiscount').val());
var currDeposit = parseFloat($('#hTotalDeposit').val());

currSprice += standardprice;
currPrice += price;
currDiscount += discount;
currDeposit += deposit;

$('#lblTotalSprice').text('$'+addCommas(currSprice.toFixed(2)));
$('#lblTotalPrice').text('$'+addCommas(currPrice.toFixed(2)));
$('#lblTotalDiscount').text('$'+addCommas(currDiscount.toFixed(2)));
$('#lblTotalDeposit').text('$'+addCommas(currDeposit.toFixed(2)));

$('#hTotalSprice').val(currSprice.toFixed(2));
$('#hTotalPrice').val(currPrice.toFixed(2));
$('#hTotalDiscount').val(currDiscount.toFixed(2));
$('#hTotalDeposit').val(currDeposit.toFixed(2));
Run Code Online (Sandbox Code Playgroud)

javascript

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

.setAttribute("disabled",false); 将editable属性更改为false

我想要有与radiobuttons相关的文本框.因此,每个单选按钮应启用它的文本框并禁用其他按钮.但是,当我将textbox的disabled属性设置为true时,它也会更改editable属性.我尝试再次设置editable属性为true但它不起作用.

这是我试过的:

JS功能:

function enable(id)
{
    var eleman = document.getElementById(id);
    eleman.setAttribute("disabled", false);
    eleman.setAttribute("editable", true);
}
Run Code Online (Sandbox Code Playgroud)

XUL元素:

<radio id="pno" label="123" onclick="enable('ad')" />
<textbox id="ad" editable="true"  disabled="true" flex="1" emptytext="asd" onkeypress="asd(event)" tooltiptext="" >
Run Code Online (Sandbox Code Playgroud)

javascript firefox xul firefox-addon

52
推荐指数
5
解决办法
19万
查看次数

有没有办法使用Capybara向Webkit发送按键?

我需要在使用Capybara和WebKit的集成测试中向Web应用程序发送一些按键.使用Selenium(WebDriver和Firefox)我可以这样实现:

find("#element_id").native.send_keys :tab
Run Code Online (Sandbox Code Playgroud)

但是WebKit的本机元素节点没有send_keys方法.实际上,WebKit中的native返回了一个包含数字的字符串.是否有另一种方法可以向WebKit发送击键?甚至可能使用JavaScript/jQuery的一些解决方法?

webkit ruby-on-rails keypress capybara

34
推荐指数
4
解决办法
2万
查看次数

Git别名 - 分支名称的命令行自动完成

如果我运行常规git命令,例如git checkout我在按Tab键时获得有用的分支名称自动完成功能.

我有一些git别名,它们将分支名称作为参数,我想知道是否有办法让分支名称自动完成与它们一起工作?

编辑:

只是为了从评论中的讨论中提供一些澄清,具有直接映射的别名工作正常,即:

ci = commit
co = checkout
Run Code Online (Sandbox Code Playgroud)

它涉及的更多,并且$1用作不参与的参数,例如:

tagarchive = !f() { git tag archive/$1 origin/$1 && git push origin :$1 && git push origin archive/$1 && git branch -d $1; }; f
Run Code Online (Sandbox Code Playgroud)

linux git alias autocomplete

32
推荐指数
2
解决办法
3587
查看次数

将deque对象转换为列表

目前我从我的存储中获取"列表"数据,"解除"它以使用该数据.在处理获取的数据后,我必须将它们放回存储器中.只要我没有强迫(至少我认为如此)使用python的标准"list"对象来保存这些数据,这就不会有问题了.

存储服务:Google Appengine.

我的解决方法是:

dequeObj = deque(myData)
my_list= list()
for obj in dequeObj:
    my_list.append(obj)
Run Code Online (Sandbox Code Playgroud)

但这似乎不是很理想.

python queue list deque

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

IntelliJ IDEA:"索引的Maven存储库"列表 - 如何在此列表中添加远程maven存储库?

我无法理解如何在IntelliJ IDEA的"Indexed Maven Repositories"列表中获取存储库.

在我的一个项目中,我在此列表中有两个存储库:一个本地和一个(主)远程(参见下面的附件截图).在其他项目中(使用AppFuse模板创建)我在列表中只有一个(本地)仓库.

我试图在pom.xml文件和settings.xml文件中添加repos,但是repos没有出现在这个"魔术"列表中.

这意味着:

  1. 我无法在dropdownlist(Ctrl+ SPACE)中看到artifactId和工件版本
  2. IDEA找不到必要的工件(或他的版本).它只在我当地的回购中寻找

IntelliJ IDEA版本:11.0

Maven版本:2.2.1

设置快照

maven-2 indexed repository intellij-idea

28
推荐指数
3
解决办法
5万
查看次数