1

我在一个页面上有很多项目,一个人可以查看每个项目。当他们单击“查看”时,将打开一个灯箱,其中包含要填写的表格。要知道正在审查什么,我将项目名称传递到表单字段中。但是我无法让数据通过。

如何将项目名称传递到表单中?

这是尝试的代码:

HTML

<div class="element indica" data-category="indica">
  <p class="type">I</p>
  <h2 class="name">Name</h2> <!-- Information I want to pass -->
  <p class="strain-info">Information Here</p>
  <p class="review"><a class="fancy_button review-form-lb" href="#review-form-lightbox"><span style="background-color: #000;">Review Strain</span></a></p>
</div>

表格代码

<!-- I omitted form code not relevant to question. -->
<input name="CAT_Custom_365569" type="text" class="cat_textbox" id="CAT_Custom_365569" value=" " maxlength="4000" readonly="readonly" />

JS

$('.fancy_button').click(function(){
   var strain = $(this).prev('h2').text();
   $('#CAT_Custom_365569').val(strain);
});
4

4 回答 4

2

prev选择一个兄弟姐妹,因此它不适用于您的情况。传递选择器意味着“仅在匹配的情况下获取前一个兄弟”。尝试这个:

var strain = $(this).closest('div').find('h2').text();
于 2013-07-23T04:01:47.457 回答
1

@elclanrs 是正确的 prev 选择前一个兄弟,当你给它一个选择器时,它会验证前一个是否符合选择器标准。

这是实现所需结果的另一种方法。

$('.fancy_button').click(function(){   
    var strain = $(this).parent().siblings('h2').text();   
    $('#CAT_Custom_365569').val(strain);
});
于 2013-07-23T04:04:28.470 回答
1

这是我要做的:

输出 HTML 时,向 a 元素添加一个名为“data-name”的新属性:

<a data-name="the name" class="fancy_button review-form-lb" href="#review-form-lightbox"><span style="background-color: #000;">Review Strain</span></a>

然后在您的点击处理程序中,执行以下操作:

$('.fancy_button').click(function(){
   var strain = encodeURIComponent($(this).attr('data-name'));
   $('#CAT_Custom_365569').val(strain);
});

这里的好处是您不必依赖链接之外的某些标记,这些标记将来可能会发生变化。我还对名称值进行了编码,以防万一那里有可能把事情搞砸的字符……这可能适用也可能不适用。

于 2013-07-23T04:09:32.623 回答
0

类选择器以点为前缀。

$(".element indica").find('.name').val();
于 2013-07-23T04:08:01.507 回答