1

我正在尝试定位所有按钮,它们是具有“动作”类的 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);
4

1 回答 1

5

您的 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);

演示

如果不关闭带有</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>
于 2013-10-07T09:31:10.017 回答