0

我正在使用 jquery 将 div 转换为链接。为了使链接正常工作,我需要取回每章的 story_id 和 chapter_id,但是当我这样做时,我只取回第一个 chapter_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/

任何帮助将非常感激!:)

4

2 回答 2

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 小提琴演示

实际上,这是因为 getter 方法(那些返回值、文本或 HTML(以及其他)的方法)仅返回选择器返回的匹配集的第一个元素的内容。

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

参考:

于 2013-06-09T00:11:27.097 回答
0

val() 仅返回匹配集中第一个元素的值,因此 story_id 和 chapter_id 对于所有链接都是相同的。 您需要在循环中逐步完成每个匹配项。实际上,您只需要在 click() 函数中使用 $(this) 来引用匹配集中的当前元素,因为 click() 函数对匹配集执行隐式循环:

$(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);
  });

});
于 2013-06-09T00:08:55.353 回答