Jquery每个函数都针对div的子节点

时间:2013-10-07 09:25:33

标签: javascript jquery html each

我正在尝试定位所有按钮,这些按钮是具有“操作”类的div的子项。

我希望我的函数从onclick获取值,过滤掉字母和特殊字符,并将数字添加到数组中。

该功能有效,当我尝试将按钮定位到div外,但不是当我尝试定位.actions按钮时。

有人有什么想法吗?

小提琴:http://jsfiddle.net/Teilmann/wN79n/5/

HTML:

<div class="actions">
    <button onclick="addToCart(1337, 'something');" />
</div>
<div class="actions">
    <button onclick="addToCart(1338, 'something');" />
</div>
<div class="actions">
    <button onclick="addToCart(1339, 'something');" />
</div>

JS:

var products = new Array();

jQuery('.actions button').each(function(){
    var id = jQuery(this).getAttribute('onclick');
    products.push(id.replace(/[^0-9]/g, ''));
});

alert(products);

1 个答案:

答案 0 :(得分:4)

您的HTML不正确<button/>它必须是<button></button>getAttribute必须是.attr()

<强> HTML

<button onclick="str1"  ></button> <!--changed html here from <button/>-->
<button onclick="2" ></button> <!--changed html here from <button/>-->
<button onclick="addToCart(1234, 'something');"  ></button> <!--changed html here from <button/>-->

<div class="actions">
    <button onclick="addToCart(1337, 'something');" />
</div>
<div class="actions">
    <button onclick="addToCart(1338, 'something');" />
</div>
<div class="actions">
    <button onclick="addToCart(1339, 'something');" />
</div>

<强>的jQuery

var products = new Array();


jQuery('.actions button').each(function(){
    var id = jQuery(this).attr('onclick');
    products.push(id.replace(/[^0-9]/g, ''));
});

alert(products);

DEMO

如果您没有使用</button>关闭按钮,html将自动生成此标记

<button onclick="str1"></button>
<button onclick="2"></button>
<button onclick="addToCart(1234, 'something');">
    <div class="actions"></div>
</button>
<button onclick="addToCart(1337, 'something');">
    <div class="actions"></div>
</button>
<button onclick="addToCart(1338, 'something');">
    <div class="actions"></div>
</button>
<button onclick="addToCart(1339, 'something');"></button>