如何从div内部调用javascript函数?

时间:2018-01-23 16:22:06

标签: javascript jquery html

请允许我问一个关于javascript函数的愚蠢问题。我想知道是否有一种从div调用javascript函数的方法。没有给出身份或类别。

功能

function callTest(){
    name=$(this).attr('data-name');
    clr=$(this).attr('data-clr');

    $(this).html(name+'/'+clr);
}

然后我想将父div中的数据打印到其内容中。通过做这样的事情。

<div data-name="john" data-clr="red">
    <script>callTest()</script>
</div>

所以我希望这个div会填充john/red。原因是会有很多div需要传递它自己的变量。

4 个答案:

答案 0 :(得分:3)

当您想获取data- *属性时,最好使用data()

var name = $(this).data('name');
var clr  = $(this).data('clr');

然后您可以使用$('div[data-name]')之类的属性选择器。 否则,最好将标识符idclass附加到您的元素中。

$('div[data-name]').each(function() {
  var name = $(this).data('name');
  var clr = $(this).data('clr');

  $(this).html(name + '/' + clr);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-name="john" data-clr="red">
</div>

答案 1 :(得分:3)

您可以执行以下操作并选择具有data-name属性的所有元素:

$('[data-name]').each(function(){
    let name = $(this).attr('data-name');
    let clr  = $(this).attr('data-clr');
    $(this).html(name+'/'+clr);
});

N.B。:添加一个类并使用它来代替选择元素对性能更好,因为它可以使用更好的优化函数。

答案 2 :(得分:2)

这应该这样做:

resource.add(
    linkTo(methodOn(UsersController.class).getOtherUser(id)).withSelfRel()
);

答案 3 :(得分:1)

这完成了你想要做的事情:

$gatewayName = 'stripe';
$storage = $this->get('payum')->getStorage('foo\CoreBundle\Entity\PackagePayment');
$payment = $storage->create();


$payment->setNumber( uniqid() );
$payment->setPackageId($package->getId());
$payment->setCurrencyCode('EUR');
$payment->setTotalAmount($amount); 
$payment->setDescription($package->getType() );
$payment->setClientId($package->getIdentity() );
$payment->setClientEmail($package->getPaymentemail());
$details=array();
$payment->setDetails($details);
$storage->update($payment);


$captureToken = $this->get('payum')->getTokenFactory()->createCaptureToken(
    $gatewayName, 
    $payment, 
    'foo_core_done_stripe'
);

return $this->redirect($captureToken->getTargetUrl()); 

当浏览器解析HTML时,“last”function callTest() { var $div = $('div:last'), name = $div.data('name'), clr = $div.data('clr'); document.write(name + '/' + clr); } 将是包含当前脚本元素的那个,即使有多个div s。

示例:

div

然而,这不是最好的方法。

相反,请更改所有<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script> function callTest() { var $div = $('div:last'), name = $div.data('name'), clr = $div.data('clr'); document.write(name + '/' + clr); } </script> <div data-name="john" data-clr="red"> <script>callTest()</script> </div> <div data-name="mary" data-clr="green"> <script>callTest()</script> </div>的HTML:

div

示例:

$('div[data-name]').html(function() {
  return $(this).data('name') + '/' + $(this).data('clr');
});
$('div[data-name]').html(function() {
  return $(this).data('name') + '/' + $(this).data('clr');
});