给定具有零个或多个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)
正如在接受的答案中所证明的那样,使用jQuery(> = 1.4.4)解决方案是微不足道的.$('#prod').data()将返回所需的数据字典.
我有这样的模型:
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)
有更好的解决方案吗?
我有一个由几行文本组成的文件:
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)
但是如何找到字符串的行号?或者,我该怎么做呢?
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"的方法来实现这一点.所以,我感谢任何帮助:)
我正在使用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) 我想要有与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) 我需要在使用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的一些解决方法?
如果我运行常规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) 目前我从我的存储中获取"列表"数据,"解除"它以使用该数据.在处理获取的数据后,我必须将它们放回存储器中.只要我没有强迫(至少我认为如此)使用python的标准"list"对象来保存这些数据,这就不会有问题了.
存储服务:Google Appengine.
我的解决方法是:
dequeObj = deque(myData)
my_list= list()
for obj in dequeObj:
my_list.append(obj)
Run Code Online (Sandbox Code Playgroud)
但这似乎不是很理想.
我无法理解如何在IntelliJ IDEA的"Indexed Maven Repositories"列表中获取存储库.
在我的一个项目中,我在此列表中有两个存储库:一个本地和一个(主)远程(参见下面的附件截图).在其他项目中(使用AppFuse模板创建)我在列表中只有一个(本地)仓库.
我试图在pom.xml文件和settings.xml文件中添加repos,但是repos没有出现在这个"魔术"列表中.
这意味着:
IntelliJ IDEA版本:11.0
Maven版本:2.2.1

javascript ×3
linux ×2
list ×2
python ×2
alias ×1
attributes ×1
autocomplete ×1
bash ×1
capybara ×1
datetime ×1
deque ×1
dictionary ×1
django ×1
firefox ×1
git ×1
html5 ×1
indexed ×1
jquery ×1
keypress ×1
maven-2 ×1
queue ×1
repository ×1
sed ×1
webkit ×1
xul ×1