1

我有 4 个<div>标签和<a>每个标签的<div>标签。在每个div标签中,我都插入了 2 个span标签和一个a标签。

单击标签时,a我需要获取产品名称和价格div

这是演示http://jsfiddle.net/8VCWU/

当我在答案中使用代码时,我收到以下警告消息... 警告信息

4

9 回答 9

1

解决方案如下

使用打击代码并尝试一下

<a data-role="link" href="javascript:linkHandler('<%= obj.productname %>', '<%= obj.price %>')" class="get" >Add <a>



function linkHandler(name, price)
{
    alert(name);
    alert(price);
    var name = name;
    var price = price;
    var cartItem = new item(name, parseFloat(price));
            // check duplicate
            var match = ko.utils.arrayFirst(viewModel.cartItems(), function(item){ return item.name == name; });
            if(match){
                match.qty(match.qty() + 1);
            } else {
              viewModel.cartItems.push(cartItem);
var rowCount = document.getElementById("cartcontent1").getElementsByTagName("TR").length;
document.getElementById("Totala").innerHTML = rowCount;
            }
}
于 2012-08-03T10:05:56.050 回答
1

尝试这个:

$(".get").click(function(e) {
    e.preventDefault();
    var $parent = $(this).closest(".item");
    var itemName = $(".postname", $parent).text();
    var itemPrice = $(".price", $parent).text();

    alert(itemName + " / " + itemPrice);    
});

示例小提琴

请注意,您有很多重复的id属性,这些属性是无效的代码,会给您带来问题。我已经将#item元素及其子元素转换为使用类。

于 2012-08-03T08:48:10.993 回答
1

jQuery

$(".get").click(function(event){    

    event.preventDefault(); /*To Prevent the anchors to take the browser to a new URL */

    var item = $(this).parent().find('#postname').text();
    var price = $(this).parent().find('#price').text(); 
    var result = item + " " + price;    
    alert(result)
});

演示

关于id的快速说明:

id 属性为 HTML 元素指定一个唯一的 id(该值在 HTML 文档中必须是唯一的)。

唯一标识符,以便您可以识别元素。您可以将其用作 getElementById() 和其他 DOM 函数的参数,并在样式表中引用该元素。

于 2012-08-03T08:55:24.527 回答
0

嗨,我不止一次使用相同的 ID 清理了提到的 HTML 是一个问题。

使用 jQuery 和我提供的解决方案的标记是微不足道的。

记下下面小提琴上的 CSS

http://jsfiddle.net/8VCWU/27/

$(document).ready(function(){
    $("#itmLst a.get").click(function(){
        var $lstItm = $(this).parents("li:first");
        var pName = $lstItm.find("span.postname").html();
        var price = $lstItm.find("span.price").html();

        alert("Product Name: " + pName + " ; Price: " + price);
    });
});
于 2012-08-03T09:18:52.767 回答
0

用 jQuery

​$('a.get').on('click',function(){
 var parent = $(this).parent(); 
 var name = $(parent+' #postname').text(); 
 var price = $(parent+' #price').text();    
});​​​​​​​​
于 2012-08-03T08:50:59.847 回答
0

或者再次:

$('a').click(function(e){

    e.preventDefault();
    var $price = $(this).siblings('#price').text();
    var $postname = $(this).siblings('#postname').text();
    alert($price);
    alert($postname);

});
于 2012-08-03T08:51:25.053 回答
0

尝试

function getPrice(currentClickObject)
{
   var priceSpan = $(currentClickObject).parent("div:first").children("#price");
   alert($(priceSpan).html());
}

并添加到您的 a 标签:

<a href="..." onClick="getPrice(this)">...</a>
于 2012-08-03T08:54:57.490 回答
0

如果您的代码中有多个,我建议使用 classed 而不是 id 。您正在寻找的功能是siblings() http://api.jquery.com/siblings/

这是您更新的小提琴:http: //jsfiddle.net/8VCWU/14/

于 2012-08-03T08:56:20.520 回答
0

我对您的 html 标签进行了一些更改,并将所有重复的 Id 替换为 class,因为您在 html 中重复了许多 id,这会导致麻烦,因此结构错误。在 HTML 中,您必须为每个标签提供唯一的 id。它不会与任何其他标签冲突。

在这里,我完成了完整的 bins 演示。我还指定了使用适当的 jQuery 选择器查找标签内容的所有替代方法。演示链接如下:

演示: http ://codebins.com/bin/4ldqp8v

jQuery

$(function() {
    $("a.get").click(function() {

        var itemName = $(this).parent().find(".postname").text().trim();
        var itemPrice = $(this).parent().find(".price").text().trim();

        //OR another Alternate
        // var itemName=$(this).parents(".item").find(".postname").text().trim();
        // var itemPrice=$(this).parents(".item").find(".price").text().trim();

        //OR another Alternate

        //var itemName=$(this).closest(".item").find(".postname").text().trim();
        //  var itemPrice=$(this).closest(".item").find(".price").text().trim();

        //OR another Alternate

        //var itemName=$(this).siblings(".postname").text().trim();
        //var itemPrice=$(this).siblings(".price").text().trim();
        alert(itemName + " / " + itemPrice);

    });
});

演示: http ://codebins.com/bin/4ldqp8v

您可以通过一一取消注释来检查所有替代方案。一切正常。

于 2012-08-03T13:10:43.493 回答