Jquery只抓取项目列表的第一个id

时间:2013-06-09 00:03:08

标签: jquery html click

我正在尝试使用jquery将div转换为链接。为了使链接工作,我需要找回每章的story_id和chapter_id,但是当我这样做时,我只回到第一章_id ...所以所有链接都是相同的。我在制作场景吗?

我的jquery看起来像是一个故事块。

$('.storyInnerBlock').click(function(){
  var story_id = $('.story_id').val();
  var chapter_id = $('.chapter_id').val();
  $ (location). attr ('href', 'http://www.writeyourfiction.com/index.php/story/readStory/'+story_id+'/'+chapter_id);
});

我设置了一个小提琴,以显示最新情况。

http://jsfiddle.net/zazvorniki/vwnCb/6/

任何帮助将不胜感激! :)

2 个答案:

答案 0 :(得分:1)

我建议:

$('.storyInnerBlock').click(function () {
    var context = $(this).closest('.storyInnerBlock'),
        story_id = context.find('.story_id').val(),
        chapter_id = context.find('.chapter_id').val();

    alert('story ' + story_id);
    alert('chapter ' + chapter_id);
});

JS Fiddle demo

实际上这是因为getter方法(那些返回值,text或HTML(以及其他)的方法)只返回选择器返回的匹配集的 first 元素的内容。

上述方法提供了一个上下文,找到了最近的祖先.storyInnerBlock元素,并使用find()限制了该元素内的搜索。

参考文献:

答案 1 :(得分:0)

val()仅返回匹配集中第一个元素的值,因此所有链接的story_id和chapter_ id都相同。 你需要循环遍历每个匹配。实际上,你只需要在你的click()函数中使用$(this)来引用匹配集中的当前元素,因为click() function对匹配的集合执行隐式循环:

$(document).ready( function() {

  $('.storyInnerBlock').on('click', function(){
    var story_id = $(this).children('.story_id').val()
    var chapter_id = $(this).children('.chapter_id').val()
    console.log(story_id + "<--->" + chapter_id);
  });

});