我有 4 个<div>
标签和<a>
每个标签的<div>
标签。在每个div
标签中,我都插入了 2 个span
标签和一个a
标签。
单击标签时,a
我需要获取产品名称和价格div
这是演示http://jsfiddle.net/8VCWU/
当我在答案中使用代码时,我收到以下警告消息...
我有 4 个<div>
标签和<a>
每个标签的<div>
标签。在每个div
标签中,我都插入了 2 个span
标签和一个a
标签。
单击标签时,a
我需要获取产品名称和价格div
这是演示http://jsfiddle.net/8VCWU/
当我在答案中使用代码时,我收到以下警告消息...
解决方案如下
使用打击代码并尝试一下
<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;
}
}
尝试这个:
$(".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
元素及其子元素转换为使用类。
$(".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 函数的参数,并在样式表中引用该元素。
嗨,我不止一次使用相同的 ID 清理了提到的 HTML 是一个问题。
使用 jQuery 和我提供的解决方案的标记是微不足道的。
记下下面小提琴上的 CSS
$(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);
});
});
用 jQuery
$('a.get').on('click',function(){
var parent = $(this).parent();
var name = $(parent+' #postname').text();
var price = $(parent+' #price').text();
});
或者再次:
$('a').click(function(e){
e.preventDefault();
var $price = $(this).siblings('#price').text();
var $postname = $(this).siblings('#postname').text();
alert($price);
alert($postname);
});
尝试
function getPrice(currentClickObject)
{
var priceSpan = $(currentClickObject).parent("div:first").children("#price");
alert($(priceSpan).html());
}
并添加到您的 a 标签:
<a href="..." onClick="getPrice(this)">...</a>
如果您的代码中有多个,我建议使用 classed 而不是 id 。您正在寻找的功能是siblings() http://api.jquery.com/siblings/
这是您更新的小提琴:http: //jsfiddle.net/8VCWU/14/
我对您的 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
您可以通过一一取消注释来检查所有替代方案。一切正常。